Subscribe to Make Magazine Today!

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.

Matt Richardson

Matt Richardson

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.


  • http://profiles.google.com/joetalbott Joe Talbott

    Awesome ;-)

  • http://profiles.google.com/joetalbott Joe Talbott

    Awesome

  • http://www.facebook.com/people/Roelf-Pringle/100002140072311 Roelf Pringle

    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!

    • Anonymous

      well sure, but the magazine is called “make” not “use some software that someone else wrote”

      • http://pulse.yahoo.com/_AKG2C7SLI4B7QKWW5NO5M4WEMI Eric

        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.

  • http://twitter.com/MrRobClarke Robert M. Clarke

    Awes… Excellent project.
    Something to have try at over the upcoming Easter Weekend perhaps.

    • http://www.facebook.com/devagaurahari Deva Gaura Hari Das

       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?

      Thanks,
      David

  • http://ctthosting.com Christian Turkoanje

    How about instead of using an array of predefined words you use an online thesaurus such as dictionary.com

    http://developer.dictionary.com/products/thesaurus

    • http://profiles.google.com/dynamicskies Luis Hernandez

      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.

      • http://www.facebook.com/ieuan.hopkins Ieuan Hopkins

        no, i think he meant you could make the teensy applet look online for words, instead of using a predefined array, makes it easier to port to other words/languages.

        • johngineer

          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.

  • http://twitter.com/Moriash Moriash

    I ran across something somewhat similar, using a promotional Ecobutton ( http://www.eco-button.com/ ) 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.

    • http://profiles.google.com/schreppers Walter Schreppers

      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 ;).

      • http://twitter.com/Moriash Moriash

        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.

    • http://pulse.yahoo.com/_4ILS5XQXNYH63YXN6TC2XYTPUA John B

      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…

  • http://pulse.yahoo.com/_Q6CMNEMHD4Q4QUFMLMRJDEIWBA Alan

    Cromulent project, dude.

    • http://mattrichardson.com/ Matt Richardson

      Ha hah, I had to look this up to get it.

  • http://www.facebook.com/profile.php?id=1310180218 Kirt Stanke

    Stupendous! Groovy! Astonishing! Prodigious! Staggering! Sublime!

    • http://mattrichardson.com/ Matt Richardson

      Thank you! Those are stupendous ones!

  • johngineer

    You have embiggened this project with vernaculous fantastitude!

  • http://twitter.com/Addidis Addidis

    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.

  • Anonymous

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

    • http://mattrichardson.com/ Matt Richardson

      Yes, the keyboard and mouse functions come along with the Teensyduino installer (and only work with the Teensy as far as I know).

  • http://www.facebook.com/profile.php?id=100000097776796 Seth Johanson

    Can I make this button with an arduino duemilanove.

    • http://mattrichardson.com/ Matt Richardson

      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.

      • http://rasterweb.net/raster/ Pete Prodoehl

        My first thought as well was, “Could I do this with an Arduino?”

        I’ll give it a go and find out. :)

        • http://mattrichardson.com/ Matt Richardson

          Hey Pete! Not sure if you saw this, but another commenter posted a link which lead me to this: http://hunt.net.nz/users/darran/ It might be a good place to start. I’m hoping we’ll see HID support “out of the box” on the next iteration of the Arduino (Uno Punto Uno?)

          • http://rasterweb.net/raster/ Pete Prodoehl

            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. :)

  • http://abdultaiyeb.myvidoop.com/ whatchamacallit

    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?

    • http://mattrichardson.com/ Matt Richardson

      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.

  • http://www.facebook.com/profile.php?id=100000097776796 Seth Johanson

    Impressive,Overwhelming,Striking,Stunning,Wondrous,Unbelievable,Excellent,Awe-inspiring!

  • http://www.facebook.com/profile.php?id=595895442 Patrick Dolan

    So awesome, do you think it would be possible to interact with a computer and use this as a cubicle button

  • http://www.facebook.com/people/Bill-Cutter/100000893704085 Bill Cutter

    If irritating hipsters were water, this guy would float the USS Nimitz.

    • http://twitter.com/balbirpr Balbir Raughi

      @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.

    • johngineer

      Wow. Do you even know what a hipster actually is?

    • http://www.facebook.com/profile.php?id=684906221 Dan Rochman

      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!

  • http://profiles.google.com/markall2004 Mark Allen

    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?

    • http://mattrichardson.com/ Matt Richardson

      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.

      • http://profiles.google.com/markall2004 Mark Allen

        Thanks! I may just do that. Great to know I just need the one board. I wonder how sturdy I can make it.

      • http://profiles.google.com/schreppers Walter Schreppers

        This gives me confidence that when I put the anykey on the market for less than 10$ its gonna be wanted ;). I’m using only some resistors, diodes and an avr chip of 2$ ;).

  • http://www.facebook.com/nelson.emerson Nelson Emerson

    Bitchin’.

  • http://profiles.google.com/schreppers Walter Schreppers

    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 http://walter.schreppers.com
    I called it the anykey. Gathering resources to produce it (parts cost me around 5$). Anyone interested in joining the adventure?

  • http://profiles.google.com/cashew76 jeff kremer

    Keep up the awesome

  • http://www.facebook.com/kennita.watson Kennita Watson

    Hmm — I guess “”tubular” is too 20th-century? :-)

  • http://www.facebook.com/people/Alexander-Hajnal/100001314983286 Alexander Hajnal

    Here’s some more: swell, bad (ass), bitchin’, gnarly

  • http://www.facebook.com/people/Alexander-Hajnal/100001314983286 Alexander Hajnal

    Here’s some more: bad (ass), gnarly, sick, swell

  • Anonymous

    I just wanted to point out that the Arduino UNO and Megs2560 can also be programmed to be USB devices like a Keyboard, Mouse, or MIDI device. Details here: http://arduino.cc/playground/Main/InterfacingWithHardware#USB

    • http://mattrichardson.com/ Matt Richardson

      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.

  • http://www.facebook.com/people/Greg-JohnnyHammersticks-Sanford/739865547 Greg JohnnyHammersticks Sanfor

    This would be most excellent to use in the work place for pranks. Simply run the usb cord through to the next cubicle and place it in the back of the computer. Then randomly click away while your co-worker is attempting to type haha.

  • http://www.facebook.com/nathalie.apinpelu Nathalie Apinpelu

    Dude! To make it absolutely perfect, you gotta find a way to replace the word “easy” for “awesome” on your button!

  • http://profiles.google.com/rancidbry Bryan Hermannsson

    Can this be done on a mac? If I’ve never coded Arduino what do I need to install?

    • http://mattrichardson.com/ Matt Richardson

      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.

  • Anonymous

    One word: Awesome!

  • http://www.facebook.com/elliottiainrichmond Elliott Richmond

    Sweet =D

  • http://www.soapyhollow.com DeAnne

    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.

  • http://rasterweb.net/raster/ Pete Prodoehl

    Matt, should there be debounce code in your example? Did you just leave it out to simplify things, or is it not needed with the Teensy?

    • http://mattrichardson.com/ Matt Richardson

      Debounce code is definitely needed. I put in a delay(500) after the word is printed as a simple (though not exactly elegant) way of avoiding the problem.

  • http://rasterweb.net/raster/ Pete Prodoehl

    I finally finished my version of the button. Details are here: http://rasterweb.net/raster/2011/05/09/the-button/

  • http://www.facebook.com/profile.php?id=501736206 Vassil Mladjov

    Matt, this was Awesome, and your video gave me the idea to do an awesome way to LIKE posts with Kinect, check this video http://www.youtube.com/watch?v=Mcv1A7_M8Fk At first I wanted to use the easy button for it, but it was too easy ;) 

  • http://www.facebook.com/profile.php?id=805263705 Frank E Duffey

    I love projects I am disabled but I do have a degree in electrical engineering Technology!

  • http://www.facebook.com/swordofthespirit Scott Neth

    AWESOME :)

  • a b

    You awesome button is really cool, but why not use a USB keyboard, just like your google pedal hack….

    • http://mattrichardson.com/ Matt Richardson

      The Google Reader Pedal hack was an easy hack for sending a single letter to the computer. This one is little more complicated, it has to send an entire word and it has to choose it randomly.

    • http://mattrichardson.com/ Matt Richardson

      The Google Reader Pedal hack was an easy hack for sending a single letter to the computer. This one is little more complicated, it has to send an entire word and it has to choose it randomly.

  • Pingback: Affordable Accessible Mouse – Part 1: Project Overview | Skippy’s Random Ramblings()

  • Adam J.

    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?

  • Even M

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

    • Sean

      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. http://www.sparkfun.com is also an awesome place.

  • Pingback: » אוזניות עם כפתור אדום לעובדים בסביבה רועשת – עשו זאת בעצמכם » וובסטר – הבלוג של חנן כהן()

  • Pingback: Free Classes: June 2 | theTransistor()

  • Merle

    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.

  • Pingback: MAKE | USB Keyboard Support with the Arduino Uno()

  • Nicholas Nagorski

    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; Keyboard.press(ctrlKey);] but it didn’t work. Thanks in advance!

    • Nicholas Nagorski

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

  • http://www.facebook.com/david.markman.52 David Markman

    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?

  • Pingback: MAKE | Make: Talk 019 – Matt Richardson, Raspberry Pi, and BeagleBone()

  • Pingback: Make: Talk 019 – Matt Richardson, Raspberry Pi, and BeagleBone()

  • AlexK

    Can you code this button to play a video??

  • Pingback: Breaktime Button | Robert Barrett()

  • Pingback: Pomp Productions | The DARE Button()

  • Pingback: Exhibit Ideas: Further Research | Saulius' Independent Production Blog()

  • N8

    You could add wunderbar! Bueno! :p

  • N8

    I am sure you can change the code and connect it to a co workers computer and give them a long day LOL

  • Pingback: investing()

Related Supplies at Maker Shed