I've been a software guy all my life. I love building software systems. Things that store data in large databases, where you login, and the system does something. I've never really understood hardware. So when the Arduino and the Raspberry PI came out I ignored them for the most part. Lately though I've been seeing things through a different lens.
Hardware and me
If you scour the googles for projects for the Arduino, you'll see a lot of weather stations. You will see a lot of lights turning themselves on and off. There isn't much excitement there (and yes I understand that this is mostly to entice beginners). I saw a bunch of infosec focused Youtube videos emulating devices like keyboards and something clicked. I caught myself saying, "Wouldn't it be cool if..." a lot. For example, I saw our beta fish aquarium and said, "Wouldn't it be cool if there was a fish feeder that had more precise controls to manage the small pellet fish food?"
So, the idea
I love productivity apps. I've been using a lot of keyboard shortcut applications and macros in my day to day life. It is usually the first thing that I install on a new computer. However, that is the main drawback: the fact that you have to install something. There are scenarios where this is not possible: a corporately owned computer (with strict policies), Citrix or the simple fact that the productivity tool is not ported for your operating system (like Ubuntu).
So what are we out to accomplish?
To build a device that plugs between a keyboard and a computer (ie uses the keyboard as its input device) where the computer recognizes it as a keyboard. It should function as a keyboard passthrough and trap certain keyboard combinations. There should be multiple combinations available such as ctrl-alt-0 through ctrl-alt-9. When the device traps a valid key combination it will "type out" an defined template from an external storage device (eg SD card or USB stick).
Where is this at?
I'm putting this project "out there" and releasing it into the wild. Warts an' all. You can check it out through the Github project page.
Is this just a pipe dream?
Well, I actually have a few things working. I went out and bought an Arduino Leonardo and a USB host shield. The code posted in the repo has a working keyboard passthrough (I'm typing this post using the hardware) except for a few weird things with the shift key (I'm not sure if it's this keyboard or something wrong with my code) and holding down keys do not work... yet.
The rest of the functionality is missing. There was a short attempt to get an SD card shield working this morning but it didn't quite work. There is a bunch of reading to do on that topic me thinks. I'd also like to learn how to print a 3d case for this eventually.
While this is an endevour of learning for me, if you're a hardware expert and have some ideas I'd love to hear them even if you see a big huge glaring mistake (ie. Yo! This hardware is really the better one to use). "Untitled" can only go so far as a project title, I've also learned that me + name choosing / branding really don't mix. So if you'd like to help me pick a name, I'm open to suggestions: firstname.lastname@example.org.