I’ve always been attracted to chording keyboards in theory, but I lack whatever childhood musical training is required to wrap my fingers around them.
So I made something else: an arpeggio keyboard.
Peggi is an eight-key keyboard that fits on the back of your phone. While chording keyboards require you to press multiple keys at the same time, arpeggio keyboards only ask that you type multiple keys in sequence.
Peggi has six “regular” keys, one space key, and one modifier key. Each finger is locked to a particular key: fingers never move across the keyboard.
You can type all lower-case letters and some common punctuation characters with exactly two keypresses. Upper-case letters and other symbols require three keypresses, and numbers and rarely-used symbols require holding the modifier key. Yeah, yeah, it’s sort of a chord. But like not really.
Try it for yourself!
I made a demo that preserves the same finger-key correspondence as the Peggi, but laid out across the qwerty home row. So instead of a 2x4 grid, it’s a 1x8 line. It sort of breaks my brain to type on it after using the real thing, but since you’ve never used the real thing, it should give you an okay idea of how it feels.
Try focusing the textarea below, and pressing the following keys on your keyboard:
FFL KJ JL JL JF KS A FFK KJ FD FD DF LLL
(If you press the wrong initial key, press
; to discard it. If you need to backspace, hold
; and press
A. If you’re on a phone… well, I dunno; maybe email yourself this URL and try it out later…)
I picture each arpeggio as a motion across a two-dimensional grid. I didn’t want to draw a fancy SVG, so content yourself with this janky table instead:
I bring this up because the motions “across” the keyboard feel more natural to me on the two dimensional grid than they do on the linear layout in the demo above.
I will also add that I think the cupped shape of the hands makes the pinky keys a lot more comfortable than the demo implies. Having the space and modifier keys on the pinkies feels fine on the Peggi, but it feels a little weird on
;. So… withhold some judgement there, maybe.
Some advantages over chording
- If you didn’t grow up playing the piano, it’s probably easier to press one key after another than to press multiple keys at the same time – you’ve been doing it all your life, on a regular keyboard.
- Characters are entered on keydown, not on keyup, just like a traditional keyboard. This makes the keyboard feel a little more responsive – and a lot more familiar.
- Because the order that you press keys matters, you can get by with fewer total keys. Six keys gives you 15 two-finger chords, but 30 two-finger arpeggios – enough to accommodate every letter in a commonly used alphabet.
…and some disadvantages
The obvious downside is that you’re submitting twice as many inputs as you would be on a chording keyboard… sort of. Typing two letters requires four keypresses, instead of two chordpresses, but you can usually begin pressing the next key before you finish pressing the previous key. Meanwhile, a chording keyboard requires you to release all keys before you can begin typing the next chord, so entering two letters on a chording keyboard is sort of four “input events” as well: keydown, keyup, keydown, keyup.
Another downside is that certain typos – either missing a key, or typing an extra key – can result in an entire word being mistyped: as soon as you’re “off by one,” every subsequent arpeggio you type will actually enter the wrong character. This is part of the reason why pressing space always presses space, regardless of the current sequence you’re typing: if you make a mistake, it will only last until the end of the current word.
I thought this would be a big problem with the design, but in practice this… almost never happens? At least at the speeds I can type at. My brain very much thinks about letters as pairs (or really as “motions” between keys), so you’d only really get off-by-one if a key press didn’t register. But because your fingers never move around, this is actually very rare.
Let’s talk about ergonomics
It’s not amazing.
I thought it was clever to put keys on the back of a phone: it leaves your thumbs free to reposition the cursor or do other navigationy things; it keeps the overall form factor relatively compact and pocket-friendly.
But in reality, your thumbs are kind of useless. I found that the most comfortable way to hold the phone is in landscape mode with your thumbs resting across the top edge – holding the phone such that they can actually reach the screen requires sticking the keyboard down and pinching just the corner of your screen with your palms.
This isn’t really as bad as it sounds. Peggi is designed for text entry; it isn’t well-suited for text editing. Occasionally making some awkward thumb contortions to move the cursor isn’t a huge deal.
And yeah, it really doesn’t work in portrait. I’ve tried. It’s awful.
Even though the photograph at the top of this post showed the keyboard in portrait orientation. That was a lie. That was a trick. It just photographs much better that way, because the keyboard is a little bit taller than my phone is wide, and it looks really goofy:
I could say that the keyboard swivels, so you can convert between portrait mode (so it fits in your pocket) and landscape mode (so you can actually use it), but I feel that I’ve lied enough to you already. I didn’t build a swively thing. I don’t know how. My knowledge of making physical things stops at, like, buying a USB cable.
Explain the key layout to me
I did not do a fancy statistical analysis to figure out what the optimal layout would be to minimize double-presses, or to maximize total comfort level given some heuristics, or anything like that.
I laid it out by hand, putting common letters in the most (subjectively!) comfortable positions, and trying to avoid as many double-presses as possible.
For example, I find it very easy to roll my fingers “up,” and comparably harder to roll them “down” – in other words, I can type
asdf more easily than
fdsa on a qwerty keyboard.
So I started by making the most common word in English – “the” – a roll of all of the fingers up, starting on the left hand and then moving to the right hand. From the home row:
SDFLKJ. This puts
e – the most frequent letter in English – on what is in my opinion the easiest sequence to type (
KJ on a qwerty keyboard). From there I placed other letters according to their frequency and comfort, trying to prevent common words and bigrams from requiring double presses. And then I tweaked it a ton over time as I actually used it.
I won’t claim that the key layout I settled on is optimal, but it stopped annoying me, and at some point I had to stop tweaking so I could actually spend some time learning to use it. If you want to make your own arpeggio keyboard, I would recommend doing a bit more science to optimize the layout than I did.
Unrealistic braggadocio about attainable typing speeds
Since the most commonly typed key is space, and it remains a single keypress, the “average” number of keypresses per character – taking capitals into account – is around 1.8.
I can type around 90wpm on my regular keyboard. Theoretically, that means I should be able to type around 50wpm on Peggi, because math.
But I also don’t have to move my fingers. Typing on Peggi is like typing exclusively from the home row, without even needing to stretch a pinky to reach for shift. So perhaps I can reach speeds even faster than 50wpm.
But I am also much more likely to “stall” – to have to press the same key multiple times in a row. And that’s much slower, because I can’t just press-press – I actually need to press, release, then press again. So perhaps 50wpm is optimistic.
Or perhaps the advantage from my fingers staying in the same place exactly counteracts the disadvantage from pressing repeat keys, and 50wpm is the correct estimate.
I have no idea. Let’s try an empirical measurement.
Actual typing speed
I’m lucky if I hit 10wpm.
The future of Peggi
Peggi appealed to me when I lived in New York City, because I wanted a good way to write during my long commute on the subway. I actually built a prototype Peggi years ago – out of a cheap Bluetooth numpad that wasn’t reprogrammable. It only worked with a custom iOS app I wrote that listened to the individual keypress events and synthetically “typed” the corresponding letters into a
UITextView. It was janky, but it worked, and the app also showed the key mappings that updated as I typed the first character in a sequence, which was very helpful as I tried to learn my own layout.
I wrote it off as an interesting experiment, partly because the numpad I used was so bad that it would miss half the keys I typed, and I haven’t really had an occasion to think about it since. I don’t live in New York City anymore, and I don’t really have a reason to write on the go these days.
But then I randomly stumbled across the Faunchpad, an eight-key macropad flashed with QMK. “My gosh,” I thought. “That would be perfect for another Peggi prototype.” So I ordered one, and wrote the firmware, and flashed it.
And here we are. It was a fun experiment, and it was nice to make another prototype, but I don’t think it’s really very useful – for me, at least. So my Peggi speed is probably going to stay at 10wpm, and that’s okay.
But I’m writing this because I think it’s an interesting idea and – while I’m sure I’m not the first to try it – I’ve never heard of any examples of keyboards like this. Maybe it will inspire you to make your own?
Hyperlinks, because this is the Internet
The GKOS inspired the “put a keyboard on the back of your phone” form factor.
I built the Peggi out of a Faunchpad that I purchased for $45 from g Heavy Industries. They also sell full stenographic keyboards like the Georgi, either as kits or pre-assembled.
The QMK firmware for Peggi is on GitHub.
ASETNIOP is a nice minimal ten-key chorded layout with stenography that you can try in your browser.
The Twiddler is a commercial one-handed chorded keyboard with built-in mouse. I’ve never actually used one, but the Twiddler v1 might have been the first chording keyboard I ever heard of, so it has a special place in my heart for getting me interested in the world of alternative input devices.