Stealth Text (mini project 1)

Max Potasznik, Richard Johnson


Motivation and Introduction

The motivation for Stealth Text came after watching the movie Her which includes many interesting ideas about the future of human-computer interaction. In the movie, almost all interaction is done through conversation and voice recognition. However, this (and one scene in the movie in particular) made me think about situations where you might want to interact with a computer, potentially in a public setting, without anyone noticing you're doing so. And so Stealth Text was born.

The use case for Stealth Text is one where you are in the presence of other people and would like to communicate (either take notes or message someone), but due to your location/surroundings directly typing on your phone is either prohibited or considered rude. In this scenario, we assume you have the normal everyday items that people carry with them throughout the day. Of all the items that people carry with them, we thought that the ubiquitous coffee mug might make a great stealth input device. The reason for this is twofold: first, coffee mugs are so commonplace that nobody would think twice about someone carrying one into a meeting where cell phone use is restricted. Second, the form factor of a coffee mug is both easy to grip and also large enough that even quickly prototyped hardware might be small enough to fit below or in the bottom of the cup.

Modified Tap Code Protocol

After deciding on our input object, we had to determine our communication protocol. As the space and stealth requirements of our project preclude the use of a full keyboard, we needed a reduced keyspace. Several popular options are available for reduced size keyboards such as T9, however these systems are designed for thumb usage and require that the thumb physically moves over the various keys. Stealth Text requires that the users fingers stay relatively stationary so as not to draw attention to themselves. This means we will only use 2 or 3 keys and instead use a method of sequential or long presses to select various letters. Luckily for us, a similar code already exists.

The Tap Code (and illustrated above) uses an implicit matrix consisting of characters in the chosen language. Sending a letter requires creating two series of taps and the length of each series determines both the row and column of the matrix used to receive the letter. For instance, to encode the letter 'm' in the traditional tap code, a user would enter 3 taps followed by a pause followed by a second set of two taps. The 5x5 grid tap code (with 'c' and 'k' co-located) has been used successfully by prisoners of war dating back to WWI and was popularized by its widespread use in the Hanoi Hilton prison during the Vietnam War.

One of the main drawbacks of the Tap Code is the long time it takes to send messages. In order to improve on the standard Tap Code, we use two buttons (one each for row and column) and two additional rows. This provides us room for 10 numeric digits in addition to the abbreviated alphabet. Our tap code is pictured below. Being able to enter both row and column simultaneously allows selecting a character much faster than the original tap code. In addition, by long pressing one key or the other, or both, we provide functionality to enter spaces, delete characters and send/confirm the message. To enter an individual character, simply stop pressing all buttons and the character will be entered after 1 second of both buttons being idle.

tap code.jpg


  • Finding the correct sensor
    • we tried 5 or 6 different types of sensors, buttons, etc until we found one that was a)not too sensitive and b) would lay flush against the mug surface
  • Making the GUI look acceptable.
    • The arduino code and code to handle messages was finished probably in the first day or so... making it look respectable is another story.

Thoughts about Project

  • On a high level, I think non-overt input mechanisms need to see more research. There are tons of new gesture and/or voice control systems which make overt input easier and easier. The next frontier will be input that nobody knows about but you... How can we make that more intuitive?
  • This project helped me relearn some basics of electrical engineering such as how a different pull-down resistance can change the sensitivity of a sensor.
  • I also like the idea of everything for this class being on github and youtube because it makes me think about and cultivate my online presence in places that are normally a bit out of my comfort zone.


Parts Used