HACKER Q&A
📣 actinium226

Has anyone tried adapting a court reporter keyboard for writing code?


Has anyone tried adapting a court reporter keyboard for writing code?


  👤 valbaca Accepted Answer ✓
The special phrase you want is "chord"

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:

https://news.ycombinator.com/item?id=30515912


👤 SKWR-PLS
I have been using plover for about three years now for the majority of my time spent on the computer. I don't think I type more than 50 words a month using a regular keyboard. I still use (half) a keyboard for games, and there are some programs on Windows plover does not work with. There is an embedded steno engine (javelin-steno) so you don't have to use plover, but I have not set it up yet and just stick to using plover.

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.


👤 lifeisstillgood
A while back in PyCon UK I met some of the people behind http://www.openstenoproject.org/plover/

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


👤 uberman
In my experience, typing speed is never the issue. I've worked with truly 10x and better programmers in my life and the road block for even them is thinking not typing.

👤 ivanjermakov
Depends on your goal. Chording technique is superior when typing words contained in the dictionary. Meaning that typing some rarely used word required typing it multiple times to "confirm".

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/


👤 elness
IANACR, but I would think it's not practical, in that the stenotype keyboard (the official term for the keyboard used by court reporters) is used to record the phonetic _sounds_ of what is being spoken, rather than the actual words. These phonetic codes do not resemble anything approximating the actual words they represent.

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...


👤 larsiusprime
Yes:

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.


👤 mcint
Mentioned by others, but I like project pages or home git repositories.

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.


👤 mchannon
I can already type on a QWERTY keyboard way faster than I can think.

That's one reason I haven't adopted a Dvorak habit.

Most court reporters use software nowadays that renders their special stenotype skills obsolete.


👤 eigenblake
Absolutely yes, but not me personally. The keywords to search for are Plover, Stenotype https://youtu.be/jRFKZGWrmrM

👤 skibz
I don't think I have the skill to learn a stenographer's keyboard, but I would love to have a small chorded keyboard just for macros.

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:

https://www.youtube.com/watch?v=B6rKUf9DWRI


👤 Froedlich
Charles Moore, creator of the FORTH programming language, also created a one-hand "puck" keyboard that worked by chording.

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..."


👤 egypturnash
A lot of the people customizing layouts for the Twiddler chording keyboard (https://www.tekgear.com/keyboards.html) are programmers, and are building custom layouts that reflect this.

👤 rhelz
For programming, querty-typing speed is not really a bottleneck for me. I already don't think as fast as I type.

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.


👤 SnooSux
This guy on YouTube talks about his experience using a steno keyboard and Plover for writing code.

https://youtube.com/@aericksteno


👤 jytou
I’m a computer engineer - a lot of programming, but also a writer so a lot of writing, and we also generally do a lot of writing in our daily lives - emails, chats, prompting… :D I am generally split between English and French writing mostly.

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.


👤 rgoulter
The best value-for-effort upgrade to keyboards for coders would be to get a keyboard where each thumb can use two-three keys each (rather than just being able to use a single giant spacebar).

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).


👤 replwoacause
If your typing speed is a productivity factor while you’re coding, then you’re not coding, you’re doing data entry.

👤 Clubber
From what I understand, stenography adopts a keyboard to a language allowing a person to type multiple keys at the same time to write a "code" that can be translated to English.

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.


👤 _jsdp
If someone's really interested in doing this, I think the Moonlander (https://www.zsa.io/moonlander) keyboard has a stenography mode It always looks so fascinating to see someone type at like 350 WPM but that's not me.

👤 tdeck
Here is a great video on how the stenotype keyboard works and how words and sentences are represented: https://m.youtube.com/watch?v=OPZW8prlEYE

It's not a general purpose character entry method, but it's very interesting.


👤 shrubble
I have one that I bought, it is mechanical and has a 3 or 4 inch wide paper tape, but, it ALSO has a 9 pin serial port and can be driven by Plover (mentioned elsewhere on this thread) I believe. Haven't yet wired it up yet as it is in storage.

👤 bear8642
Feel it would be interesting trying a chording keyboard with a glyph based language - thinking APL, BQN and the like…

There you could match the chords to glyphs rather than require the auto complete functionality others have suggested.


👤 b5n
You might consider using a templating system similar to `yasnippet` to expand abbreviations.

https://github.com/joaotavora/yasnippet


👤 jasonm23
https://deskthority.net/ is the place to find a wide range of keyboard hacks and hackers

👤 lol768
I wish Plover supported Wayland.. it looks like a lot of work from lots of different people went into different workarounds but nothing that managed to end up in a mergeable state as yet

👤 habitue
Preordered https://forgekeyboard.com/

We'll see if I can actually use it!


👤 casey2
The ideal amount of code you should write to solve a problem is none, but I'm sure it's been tried to antisocial results.

👤 fuzztester
Not me. I gave it a trial, but couldn't do justice to it. The key jurors got bored of the case. So I couldn't write a sentence.

👤 gf3
This doesn’t really answer your question but I was on Jury Duty recently and was disappointed to learn that the stenographer was using a normal QWERTY keyboard and boring Dell computer. It seems that they used special software however that was connected to an audio feed with some recall ability.

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.