Chorded typing, that is where multiple simultaneous keypresses trigger a single symbol, word or phrase offers unbeatable performance when it comes to typing speed. A trained user can and might even be required to write as fast or faster than human speech. Still it sees virtually no use outside of courtrooms.

Using a 5-finger approach allows the user to operate the mouse simultaneously in a comfortable “FPS-stance.” This has shown to increase UI efficiency for tasks where the work can be done in parallel. In fact to use the left and right hand for different things is very natural for humans.

Unfortunately it is hard for users to memorize all the chords needed. Especially the uncommon ones. Whereas ‘e’ might be a tenth of the language ‘z’ only constitutes a fraction of a percent. On a “Plain old keyboard” a quick look suffices, but the device above offers no such respite. Imagine having to reach for a manual every time you want to spell ‘Zimbabwe’!

From sigma tree approach

Visual feedback contra muscle memory

Most of us have probably used physical keyboards for so long that it is in our very nature. There is very little delay since visual or cognitive input is not required. On the other hand, systems that require visual feedback, say choosing a suggested word on “touch QWERTY” introduces a delay by requiring an increased cognitive load.

Layouts that move dramatically have a disadvantage due to this, that needs to be compensated by other means; say by means of “Reverse Compression”. For more on this, see the Dasher method.

Doing what the keyboard does but better

So what if we always presented a reference on the HUD? Preferably semi transparent and easily hidden and moved as to not inconvenience the user by wasting screen estate.

Since we are doing this on the display we can and should give the users hints as to where to look. This can be done as follows:

  • change of fontsize
  • brighten probable symbols
  • filled / outline
  • color coded
  • transparency

As the symbols stay put, we still retain that edge over dynamic systems as after only a little practice the letters that covers 80% of the language will be memorized.

Like what I am doing?

I am working on this full time on a open source basis so please consider supporting me. That way you will see results quicker!

Demo / Prototype

So enough talk and time for a demo! Above you will find the output of a user entering Engl. As such “i” as in “Engl-i-sh”, “a” as in “Engl-a” (Swedish name) or “o” as in “Engl-o-be” lights up. The letter “q” is unlikely so it remains yellow and small.

TRY IT OUT (Not mobile friendly)

The prediction is done on a ridiculously small set (wiki page on English) but works ok. Since it works on a character level it can assist with words such as “Englacial”, without having seen it.

A fully featured implementation will support word predictions and OS integration and have the potential of not only being extremely fast, but also portable and powerful.

Thank you for reading!

Do not hesitate to reach out if this interests you! There is a lot to be done and if you wish to help out it would be appreciated.

Please comment, share and or check out my patreon, to help this stay open source and freely available.

Spread the word

Join the Conversation


  1. Hi, this sounds interesting. There seems to be a handful on broken images on the post though. Any chance your could fix them?

  2. I am impressed! Very good and healing! This needs to be much more supported than any populism products. You are healing people’s ability like doctor combining “coding” and “medicine” with the bridge of coding!

    We need to support you with Patreon. Thanks all!

  3. I love this! One UI suggestion – could the block representing the space bar sit below the other blocks? This would be more visually intuitive to me. Like so

    as opposed to:

  4. I made something similar years ago. Here is a comment I made on hacker news back in 2014:
    I developed a software demo (for single hand chording on the keyboard) that updates the character tree representation, possible outputs are shown as the chord sequence is formed. And the adjacent keys idea you have which I call “bigram rollover” works really well in this type of system, because you can tell what neighboring characters are.

    The “bigram rollover” is key to reducing the number of key events, and the added bonus is that it should help ramp up the steep learning curve with getting the right sequence.

    I am also investigating some sort of phonetic/bigram mapping system (maybe similar to the plover/stenotype system), seems it’s the way to go, as shorthand seems to solve the main issue with chording which is high number of key events for a single output.

    I am actually looking for help designing the mapping as explained above, it seems we have very similar ideas, perhaps we can collaborate?

Leave a comment

Your email address will not be published. Required fields are marked *