A stenographer's keyboard is a special kind of chord keyboard for spoken English.
There are other kinds of chord keyboards, but look into those.
For example:
- https://www.charachorder.com/
- https://github.com/davidphilipbarr/Sweep
Related:
I write all my code using plover, but I am not a professional programmer. I use emacs most of the time. I use this dictionary for my symbols https://sammdot.ca/steno/emily-symbols.png, this one for typing almost any shortcut combination with my left-hand https://github.com/Abkwreu/plover-left-hand-modifiers/blob/m..., as well as this http://www.openstenoproject.org/stenodict/dictionaries/cross... for moving the cursor around and selecting text. The emily-symbol dictionary is fairly popular, and most users will have some set of dictionaries for shortcuts and movement.
Its worth noting you can type single letters, so if you don't know a word or don't care to learn it, you can still type the word out. You don't have to memorize every single word.
It’s awesome just how fast and accurate they can be, and most devs were of my mindset “wow can I learn to type like that - it woukd solve this problem and that”
Till we found out just how much work is needed to get good. It’s a true skill, and sadly undervalued but something that just has too little pro for the cons - in my opinion as a developer.
I already type at faster than I can code, and slightly slower than I can write English. A better keyboard, or the same keyboard at different workstations and laptops, or some typing tutorials woukd help me - but full on 100wpm is not going to help me debug Kerberos failures
Writing code does not suite well for this, since coding with completion contains much more punctuation than plain text.
Instead, check out ergonomic mechanical keyboards: low-profile, split, with columnar stagger, preferrably with 36 or less keys. Uncommon keys are behind a modifier key that acts as a normal key when pressed, but as a layer when held (called modtap).
Also you can experiment with non-qwerty layouts, but IME it gives much less benefit than having a layered layout of physical keys.
More info here: https://www.reddit.com/r/ErgoMechKeyboards/
Also, computer source code (whatever the language) typically contains variable names which often are (a) typically case-sensitive, and (b) abbreviated or even single characters. And even the basic syntax of the chosen language may not be easily capturable via phonetic sounds, what with open and closing parentheses, curly braces, square brackets, etc., and compound reserved words with prefixes (such as #foreach in Velocity template language).
Again, IANACR, but I don't see how it could possibly work...
https://www.fortressofdoors.com/stenography-for-programming/...
It was interesting and fun but I didn’t have enough time/patience to get really good at it.
To get good requires both a lot of practice and building up a personal dictionary. Also steno itself is more adapted for transcribing speech than code, which uses symbols and special characters a lot.
https://github.com/openstenoproject/plover
https://www.openstenoproject.org/plover/
An in-browser demo, https://www.openstenoproject.org/demo/
Suggested, loved extensions, https://github.com/openstenoproject/awesome-plover
Chorded keyboard input methods, more generally, are worth looking into.
That's one reason I haven't adopted a Dvorak habit.
Most court reporters use software nowadays that renders their special stenotype skills obsolete.
I always liked the look of Doug Engelbart's one in the Mother of All Demos. It's very basic, but I'd be quite satisfied with something like that today. He demonstrates it at about 1:40:
Supposedly, he used it to write programs in FORTH while driving to work.
As far as the story goes, he programmed input-only, having no visual or audible way to review what he wrote.
"...and back in the day, we had to chip the edges of zeroes to make ones..."
I would like to be able to take notes as fast as people are talking, though, and for that you do need a chording keyboard.
I use a combination of Dygma Defy with its awesome thumb cluster, along with macros for frequent series of letters (think “tion” and such) as well as chords using https://github.com/rvaiya/keyd/ . And I use the Optimot layout because I’m French, for English speakers, Dvorak is probably enough, but Colemak and many other alternatives offer various advantages depending on your usage.
As many have hinted here, it’s absolutely not only about speed. It’s about comfort, both physical and psychological.
Using the thumb is a great way to avoid moving the hands too much because now your pinkies don't have to reach keys on the side which generally causes a slight extension of the hand. After a year of using the Defy, I don't have any form of strain building up in the thumbs, even though I use them quite a lot - but still a lot less than other fingers.
Macros for short series of letters are very powerful in my opinion: it doesn't necessarily goes faster as it breaks the flow of typing, but you have a lot less keys to press which also minimizes errors. The same goes with chords using keyd (I know it’s originally not exactly designed for that usage, but it still works great at least for me) - less keys, less coordination.
Finally, the choice of keyboard layout is critical. Originally I’ve switched from the French Azerty to Bépo because I notices how much my wrists were moving when I was typing in French with Azerty compared to English in Dvorak. There was a huge difference and I could feel it in my bones after long sessions of typing. So yes, choose your layout wisely.
As a last note, typing speed does matter. But it’s not about typing at the 0.001% fastest percentile. Typing speed will not make you really faster, but you just don't want it to slow you down too much. Typically, you don't want to be in the position where your thoughts go so fast that you feel the frustration of not being able to type fast enough and losing some of your thoughts in the process. Besides, for coding it’s much more about having the right tools at your disposal: powerful auto-complete and suggestions, easy refactoring processes, keyboard shortcuts to do everything you need, easy access to symbols on your keyboard/layout, etc. Typing speed is rarely an issue while programming compared to when writing plain text.
Stenography looks like 'high effort, high reward'.
Whereas, bringing keys like backspace, enter, esc, tab to within easy reach of the hands on home row is going to be a big increase in comfort (and I'd be surprised if it was slower).
Programming languages don't have such constraints because the language can be fluid to adopt to the keyboard. A good example is C compared to the much less terse Delphi.
It's not a general purpose character entry method, but it's very interesting.
There you could match the chords to glyphs rather than require the auto complete functionality others have suggested.
We'll see if I can actually use it!
That being said there is some [support for stenography in the QMK programmable keyboard firmware](https://docs.qmk.fm/features/stenography). I’m not sure how widespread its use is.