Sotto: A Silent One-Handed Modular Keyset

The essential input you never knew you needed. Sotto is a portable, wearable, more subtle way for you to text and type on the go.

Similar projects worth following
When Douglas Engelbart introduced the keyboard and mouse in his Mother of All Demos, he also showed a third tool: the chorded keyset. Engelbart considered this tool essential for speedy interactions, with one hand on the mouse and the other relaying typed input to the machine.

With a modern world full of multitasking and inadequate mobile input devices, the concept of rapid, one-handed input is more important than ever. Sotto revives the chorded keyset with new technology- bluetooth connectivity so you can type and text on the go. Plus, Sotto provides an output channel through haptic feedback- read with your fingers as Sotto vibrates back letters in the form of chords.

Sotto is designed to be used naturally, without vision, by anyone. We especially hope that Sotto will help those with visual impairments read and write on the go more easily.

You believe in human augmentation. Sotto can help.

We are living in a world of screen overload. Smooth smartphones and modular screens seem convenient, but are tremendously difficult for an increasing number of people. Over-illumination from screens commonly causes migraines and headaches. For those with certain temporary or permanent brain injuries, extended screen time is not an option.

Plus, we have increasing need for easy, on-the-go input, where visual attention is not required. Texting is awkward, and texting one-handed is worse. Looking at a phone to text while driving causes 1.6 million accidents per year. Diverting visual attention to notepads or phones to take notes while in projects is sometimes impossible, doing so during a conversation is often rude.

The solution? Sotto, a one-handed chorded keyset designed for subtle use while on-the-go.

Chorded keysets have a long history with stenographers, telegraph operators, and technologists. Keysets were popular in Douglas Engelbart's research group and at Xerox PARC, but Steve Jobs decided against a keyset product in the 1980s. As consumers increasingly relied on the mouse and keyboard, chorded keysets fell by the wayside.

Which is a shame, because keysets are shockingly easy to learn and use. Engelbart found that adults and children alike mastered the keyset in less than two hours no matter what method of training was used. (In comparison, learning to type on a keyboard takes about 10 hours.) Modern braille writers-- keyboards with a braille output-- use a two-handed chorded keyset with 6 buttons and a space bar.

Although one-handed keyboards have been attempted in the past, they generally rely on direct button presses and need to be gripped in one hand. They are often designed to be on-the-go, but only provide an option for input and not for output. Sotto is a gripless one-handed keyboard with a silent input and option for vibrating output, allowing you to write and read silently using haptics.

The technology behind Sotto is readily available, easy to use, and highly modular. Sotto relies on a bluetooth-connected microcontroller that sits on the wrist, as well as small "nodes" on each finger. Each node is a small button and vibration motor, so that it can sense input and relay output. Although Sotto has five nodes by default, you could easily plug in one (for morse code) or four on each hand (for braille writers). Sotto is open-source and hackable, so please test the limits of the system with new and interesting features.

scale 75.stl

Medium decorative scale, to hold the bundle of JST wires. Print 1.

Standard Tesselated Geometry - 3.14 MB - 10/15/2017 at 01:38


scale 100.stl

Biggest decorative scale, to hide the Feather. Print 1.

Standard Tesselated Geometry - 2.86 MB - 10/15/2017 at 01:38


scale 50.stl

Smallest decorative scale, to cover the JST connectors. Print 5.

Standard Tesselated Geometry - 3.20 MB - 10/15/2017 at 01:38



The holder for the button and vibration motor. Print 5.

Standard Tesselated Geometry - 1.22 MB - 10/15/2017 at 01:38



Base plate to hold the feather. Print 1.

Standard Tesselated Geometry - 40.71 kB - 10/15/2017 at 01:38


View all 9 files

  • 1 × Adafruit Feather Bluefruit LE I used the 32u4, but others will probably work too
  • 1 × 3.7 V LiPo Battery Mine was a 450 mAh battery! Keeping it small :)
  • 1 × Wire I used wire-wrapping wire because it's tiny and wonderful
  • 1 × Protoboard Mine was a 2cm x 8cm, cut in half
  • 1 × 3D-Printed Parts stl files available at

View all 10 components

  • An overview of Sotto

    Christine10/15/2017 at 19:47 0 comments

    To answer the ultimate question: "y tho?"

  • Sotto Is Done!

    Christine10/15/2017 at 19:43 0 comments

    Hi all!

    Ready to type chorded-style?

    Here's the how-to for Sotto, the one-handed bluetooth chorded keyset that writes and reads with haptic feedback.

    You can see from past logs that I played a lot with different inputs for Sotto, but in the end I wanted to make something that was going to be extremely easy for any of you to build immediately, without having to go pick up specialized parts. So this final version uses stuff you probably already have lying around-- push buttons, vibration motors, wire, and JST headers.

    I've posted instructions on how to get it working, but I suggest you check out this video, which will make the instructions a lot easier to follow:

  • Reliable, 5-fingered readability

    Christine09/04/2017 at 00:01 0 comments

    Here's a super hacky wire/conductive pad version of Sotto:

    Each finger pad is soft and not too noticeable, and also highly reliable and subtle. Plus, it's cheap and easy to make! Super excited to design a good enclosure here that is going to make it easy to access the guts and have more modularity on how many fingerpads are used, so it can be easily repurposed as a fast, on-the-go braille writer.

  • Conductive thread, and a sewn Sotto

    Christine09/03/2017 at 03:30 0 comments

    Hello, fantastical experiments with conductive thread and softer components.

    Finished unpacking a whole room, decided to reward self by working on a sewn version of Sotto. The output is a lot junkier than I'm used to seeing with wires, and without the sewable microcontrollers, it seems pretty susceptible to shorts in a way that makes me a tad nervous. I also used larger swaths of conductive fabric, which worked a lot better than the smaller bit I used earlier. So I think I'll cut the fingers off of this one and try it with some wires connecting to a wristband holding the microcontroller. You know, after more boxes happen.

  • Anti-static gloves FTW

    Christine09/02/2017 at 16:57 0 comments

    While unpacking this morning, I found a bag of anti-static gloves we got from Ali-Express that don't seem to actually have conductive thread at all but do seem to be made of anti-static material. Since this seemed like it would be better and more reliable than the anti-static bag, I got out a needle and thread, conductive thread, and conductive fabric and went to work.

    After a really small amount of super simple stitching, I ended up with something that fit my hand perfectly and worked really reliably for gentle pressure. (Every time the value goes into the triple digits in the serial dump below, that's a tap.)

    This is a super and super reliable way to make a small, wearable chorded keyset that you can activate by pressing your fingers lightly and subtly into a table, your leg, etc, without having to wear a series of odd rings or other contraptions. Next step: entire glove.

  • I'm back, and so is Sotto

    Christine09/02/2017 at 05:19 0 comments

    First log in a while, between some busy-ness at the day job and a crazy move from San Francisco to Los Angeles. Moving two cats for 6 hours in a car is no joke.

    In the meantime, I've been thinking a lot more about Sotto and how to integrate it more naturally into the hand. These thoughts are based on where to place sensors, and what feels the most natural when it comes to typing-like actions.

    Chorded keysets should work similarly to playing the piano-- but when playing the piano, pressing keys, and more, there is a certain amount of resistance and haptic feedback that occurs. I'm more comfortable (and certain of what I'm typing) when I tap the "right letters" lightly against my leg or a desk, barely moving my fingers, than I am when I type by wiggling my fingers indiscriminately in the air. It's difficult to isolate a single finger movement in the absence of resistance and feedback.

    With this in mind, I'm reimagining/evolving Sotto to account for movements that feel a bit more like button pushing. Starting with some crazy attempts at makeshift FSRs, from my half-unpacked boxes.

    Here's two pieces of conductive fabric, not touching each other, with a piece of anti-static bag separating them. Plus, some adorable tape I was using to label my moving boxes :) I also threw in a pulldown resistor (not pictured).

    I'm getting a lot of junk over serial, but when I'm pressing the improvised FSR, the average reading is definitely higher. I'm thinking about what these would look like stitched into the end of a glove, or at the very least, taped to the ends of my fingers. I'm gonna go unpack more boxes and think about it. Stay tuned.

  • A basic sottotype, now on GitHub

    Christine06/11/2017 at 03:43 0 comments

    Ready for a sottotype?? (sotto prototype)

    Using MPU6050 accel/gyros and a Photon, you can now detect 5-finger combinations! It uses the same binary-based input as this chorded keyset emulator.

    Check out the code here!

    Next up: actual typing, glove form-factor, and bluetooth connectivity

  • Sotto and the Internet of Useful Things

    Christine06/08/2017 at 07:40 0 comments

    This contest is called the Internet of Useful Things, and I’m going to take that title to heart. In order to be optimally useful, an Internet of Things Thing must connect to the internet in the best-suited way possible. If you’ve been on HackPretty, you know I like to talk through concepts in case beginners are listening, so feel free to skip this log if you’re already an expert!

    Connected microcontrollers are tools. They come in several shapes and varieties: bluetooth, cellular, Wi-Fi, and more. If you’re prototyping in a hurry, you’re likely to use whatever’s available. (I have like 20 Particle Photons in a drawer, so I'm often using those.) But if you’ve got a little time, you should try to use the tool that is fit to the job at hand. You wouldn’t use a pair of pliers to hammer in a nail, unless you were really in a bind. If you’ve got a choice between Wi-Fi and bluetooth, you want to pick the right one.

    In general, I think of this as:

    • Wi-Fi: Power consumptive, range-restricted to router. (Photon, ESP8266, etc.)
      • Smart Home devices
      • Lamps and Clocks
      • Stuff plugged into the wall
    • Bluetooth/BLE: Power-light, range-restricted to phone. (Bluno Beetle, Redbear Duo, etc.)
      • Wearables
      • Accessories
    • Cellular: Power-light, range-restricted to cell towers (usually very wide range) (Particle Electron, etc.)
      • Asset Trackers
      • Remote data-gathering tools
      • Easy-onboarding devices (while Wi-Fi and bluetooth need to be set up to your router or device, cellular stuff can turn on, connect, and work.)

    Sotto is a chorded keyset for input on the go. So this means we’re either going to want either bluetooth or cellular. I’m a fan of Sotto running on BLE, since I expect that it will always be in range of your phone and sometimes working directly with your phone apps.

    Bluetooth has a bunch of different protocols for communication. Since Sotto is a chorded keyset, I’m going to need one mode to be through an HID (human input device) profile-- the standard profile you see used for bluetooth keyboards. The Adafruit Bluefruit has a built-in keyboard example, which we’re going to hack for the first prototype of Sotto.

    More to be posted soon here. I'll also try to cross-post fundamental basic concepts to HackPretty when they come up-- I have a nice outline for a simple post about gyros I need to get working on!

  • All the gyros ever, forever and ever...

    Christine06/05/2017 at 17:58 0 comments

    The MPU-6050 is an InvenSense sensor with a MEMS accelerometer and a MEMS gyro. It's available as a breakout from SparkFun for ~$40/board, but I needed at least 5 of them. Ebay/amazon/aliexpress was happy to help! These other breakouts were mega cheap and so far I've only had one failure out of 6. Not bad for the price.

    The MPU-6050 communicates over I2C, so we need to be fancy with the addresses if we're going to read 5 at a time. I ran into this issue with the IR temperature sensors for the Starfish Cat, and solved it by manually changing the addresses on the MLX90614 and editing the library to allow for multiple addresses. It's not as easy to reprogram the address on the MPU-6050, but you can shift the address dynamically by writing the ADO pin low (0x68) or high (0x69).

    If you attach ADO to your digital pins and only turn one on at a time, you can scan through the sensors to grab data before switching the address again. This is a recommended trick for the MPU-6050 on the Arduino Playground. Your granularity will leave something to be desired, but if your goal is to read extreme motions like finger strikes, then you’re probably okay. Here’s an example of this method employed with the Particle Photon.

    Stay tuned! More updates soon.

  • A Chorded Keyset Emulator

    Christine05/30/2017 at 15:52 0 comments

    I'm piecing together the hardware for Sotto now, but in the meantime I thought it'd be fun to have a chorded keyset that people could try online, to test out the idea. Hooray for the speedy nature of javascript!

    If you're listening, dear Internet readers, please try out the keyset emulator and let me know what buttons and features you'd like in a portable hardware version! (I'll eventually add lowercase, punctuation, and number settings to both the emulator and hardware versions!)

View all 10 project logs

  • 1
    Watch this video!

    This video will give you a sense of how Sotto gets put together, making the following instructions WAY less confusing :)

  • 2
    Start Printing!

    Get your prints started! If you don't have a 3D printer, you can always take advantage of awesome services like 3dhubs and fictiv.

    Download your stl files here! You'll need 5 holders, 5 covers, 1 base plate, 1 "scale 100", 1 "scale 75", and 5 "scale 50"'s.

    You can also download the bangle if you want, but it will probably only fit you if you too have an unreasonably tiny wrist.

  • 3
    Upload Code!

    While you’re waiting for the print to finish, upload this code to your Feather using the Arduino IDE.

View all 10 instructions

Enjoy this project?



Onniekoski wrote 12/25/2018 at 10:46 point

How hard would it be to get this working on a Pro Micro? I’ve made a gamepad out of one before but I’m very much a novice at programming.

Also, just made a poster for your Chorded Key Set

  Are you sure? yes | no

joelavigueur wrote 10/18/2017 at 02:03 point

Very interesting update, thanks for putting the time and effort into making those videos!

  Are you sure? yes | no

joelavigueur wrote 08/02/2017 at 07:29 point

I'm really interested in this project and excited to see where it goes. Keep up the good work.

  Are you sure? yes | no

Nick Momrik wrote 07/21/2017 at 20:18 point

Bummer the keyset emulator doesn't have a Dvorak setting.

  Are you sure? yes | no

Neon22 wrote 07/13/2017 at 11:03 point

I guess a smaller cheaper single acclerometer chip would eventually be 'better' than the 6050 but for now you get max experimentation because 3 axis gyro and accel.
Great idea. Looking fwd to this one.

  Are you sure? yes | no

Andrew Nambudripad wrote 07/13/2017 at 00:22 point

You probably want to optimize the keyout by frequency, enabling common letters (R,s,l,e) to be mapped to single character chording. Take a look at phonetic chording (a la Stenotype, based off shorthand), as well as the "Velotype" style syllabic chording. Stenotype gets you up to 300 WPM -- but only for those words commonly 'encoded' into English--, and Velotype gets you up to 200wpm including strange proper nouns. Check out wiki/Chorded_Keyboard has links out to most of those. The dead-since-Don-Draper-days English shorthand  would enable secretaries (my bad, personal assistants) to get ~200 WPM *by hand*, so QWERTY and even DVORAK is a big step back. 

A chordable, encodable (stenostyle), one hand interface with autocomplete (SwiftKey, the old Android style -- which had word auto-suggest.. i.e., if you often typed "what's up", then "w" would bring up the most commonly used words beginning with 'w' (ie. where, what, what's, when); say then you select 'what's', it'll use heuristics to offer say "going | up | your") etc. "Frecency" algorithms do this fairly well (placing each possible completion re: frequency and recency into a weighed matrix)

  Are you sure? yes | no

rmd6502 wrote 07/12/2017 at 22:21 point

You _will_ be making a Kickstarter for this, right?

  Are you sure? yes | no

Arya wrote 06/24/2017 at 22:08 point

Hi! The emulator is great, and I'm thinking of making a ZeroPhone mod board for Sotto - will send you some pics when it's done =)

  Are you sure? yes | no

Christine wrote 06/05/2017 at 17:36 point

Yep! Engelbart's original keyset used a binary system to code for letters and numbers-- set for letters, 1 would be A, 2 would be B, etc. I actually made an emulator for this system, it's over at

  Are you sure? yes | no

Jarrett wrote 06/05/2017 at 16:32 point

Are those binary fingernails?

To count... Digitally?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates