Typing Shorthand System

I have been exploring options for different shorthand systems to improve typing efficiency. This effort relates to the work that I have done to learn to use Ergonomic Keyboards but does not absolutely require a special ergo keyboard.

I first learned about shorthand systems from precondition when I learned to use his QMK layout for my Dactyl Manuform keyboard. He uses a combination of 'steno-lite' keyboard shortcuts and a layer for standard stenography typing using Plover. I now have my own QMK layout where I have compiled all the best features that I have found and optimized it for the shorthand typing system discussed below: https://github.com/jeffgaddis/dactyl_manuform_combo_keymap

Plover

Plover is an open source solution for stenography that does not require the expensive keyboards that professional stenographers use. Stenography seems to be the most efficient typing solution based on how many people have been able to use it for typing > 200 wpm. It uses 'chords' from the phonetics of words to allow entire words to be output instantly by simultaneously pressing a key combination. Plover allows any keyboard to be used for steno but any serious user will want to invest in a steno keyboard.

The main problem with steno solutions is that it is a huge investment to learn to use it. It also is not absolutely better than other options given that the top competitive typists on standard keyboards regularly beat stenographers. Xah Lee probably has the most comprehensive keyboard blog and he has given a number of reasons why he does not like steno.

After testing plover a little and assessing all of this information, I decided that steno can never be a solution for regular people. I think it will likely fall out of favor to more simple solutions like the various 'steno-lite' features that were mentioned above.

Other Software

Next I explored options for using shorthand systems with software on the computer for general keyboards. I was basically wanting to expand on the QMK 'steno-lite' features that I had been using but I could not store enough key combos on the keyboard firmware.

Some forms of this already exists within lots of typing tools (word processors, Gmail, phone texting apps, etc.) as part of the spell checking or auto-complete features. The best option for building a solution seems to be AutoHotkey. I tried some AutoHotkey solutions but it was not nearly as convenient as firmware solutions. The timing for inputs to trigger auto-completion is more difficult and maintaining the functionality across multiple computers is inconvenient.

QMK Firmware Solution

I have now circled back to QMK because the 'steno-lite' key 'combos' feature is so easy to use once it is flashed to the keyboard firmware. The best guide for using these features is provided by GBoards but if that site becomes unavailable there is info in the QMK docs.

I have created a program to generate QMK combo keys for all English words on my GitHub: https://github.com/jeffgaddis/QMK_Combo_Generator

This system supports different keyboard layouts and thumb cluster arrangements for ergo keyboards. It also could be used for languages other than English since the word frequency concepts used should generally be universal (similar to TF-IDF).

This system will work best with a micro controller that has more storage space to support all of the combos. I have been limited to ~100 combos with a Pro Micro (ATmega32U4). The best micro controller right now seems to be the RP2040 and I plan to use this one SparkFun Pro Micro - RP2040.

This effort is still in development but the combos that I saved have been working decently for me in the last several months. I plan to revise it again soon because it is hard to remember what the less common combos are. It currently focuses on creating a combo with the fewest keys possible and I plan to change it to use the most keys possible. The number of keys used does not seem to have much impact on efficiency since they are all pressed simultaneously. I have already made numerous tweaks to find the most memorable letters in a word (least frequent in general) and to exclude any combos that are physically difficult or impossible to reach so I am hopeful that this will be the last major change.

Other Firmware Solutions

In researching these solutions I also found that CharaChorder came to roughly the same conclusion and created some products for it. Their dongle solution along with their training software is probably a lot more beginner friendly than what I created.

I prefer to use my own more flexible and free-open source solution for now but I am glad to see that this company exists.

The founder of CharaChorder has demonstrated the it is possible to use this kind of chording system to type with incredible speed and has clearly spent a lot of time studying all the shorthand systems discussed here. There were some reports of product quality issues from early users but it seems like the company has made a good effort to address them and continually improved.

I also saw comments about their products only including 500 saved chords so they apparently have not tried to calculate the ideal combos like I am doing. I would be happy to see my code featured in their product someday if they are willing to open source their code under the GPL-3.0 license.