Steno typing (Plover) - Desktop Customization & Workflow

Users browsing this thread: 1 Guest(s)
stratex
Nixers
I was thinking about it for so long, imagine how cool is that to "type" at a whopping 250-300WPM (1250-1500CPM), that's how I see a true hacker would type. Of course it doesn't matter that much for programming, because you think and go around the code more than you actually type, but for any other kinds of text input Steno is a very attractive skill in my opinion.
I will try to learn stenotyping (with plover), and will keep a diary in this thread to make myself accountable, at least more than I would be at my own. If you have an ortholiniar keyboard (preferably something like Planck) you can join me for more fun and motivation. I don't think regular staggered qwerty with a single space bar will be comfortable to stenotype, but you can try it anyway.
Since I always have problems with motivation and persistence, I decided not to rush with this one, to not burnout. I think I can manage comfortable 30 minutes of practice a day, minus weekends, and I give myself a whole year to learn it to at least my regular typing speed of ~80WPM. Wish me luck.

Some good videos, you can check:

Co-creator of Plover gives a presentation, it's old but that's where it started:
https://www.youtube.com/watch?v=Wpv-Qb-dB6g
Another good presentation:
https://www.youtube.com/watch?v=CRXiNMS9JuY
Typing example (on staggered keyboard):
https://www.youtube.com/watch?v=KZGuBV1xe64
Real time on steno machine:
https://www.youtube.com/watch?v=YpJ4NP6O9pw
stratex
Nixers
Initial hardware/software setup.
I have a QMK based custom hand-wired keyboard, with atmega32u4 controller (teensy 2.0). And I run Gentoo Linux, so most of what I will describe below are for my particular environment.

First thing first I had to re-do my crossdev build environment to be able to edit and re-flash the keyboard firmware. In Gentoo you compile everything yourself, but compiling for different architecture other than your host is not as straight forward as just gcc *something*. But it's not that difficult either. For desktop profile these are the steps I followed:
# Emerging needed tools
sudo emerge --ask sys-devel/crossdev
sudo emerge --ask dev-embedded/teensy_loader_cli-9999
# Creating the avr toolchain
sudo crossdev -s4 --stable --target avr --portage --verbose
# Cloning qmk repo
git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
make git-submodule
# I copy my custom keymap to a firmware directory tree
cp -r ~/mykeymap/ ./keyboards/mykeymap
# Compiling the firmware after that is done as easy as just:
make mykeymap:default
# And finally to flash I use teensy_loader_cli (it's from my overlay, doesn't come with Gentoo by default)
# I think you can also use avrdude to flash, but I wasn't able to do it.
teensy_loader_cli -mmcu=atmega32u4 -w mykeymap_default.hex
#(press the button on teensy)

There are two different types of Steno emulation, one is when Plover software works with any regular keycodes, and emulates steno this way. The downside is that you can't have a dedicated Steno layer.
The other way is to emulate a Steno machine via a virtual serial port, this way you run Plover software once and can just switch between regular keyboard layer and a dedicated steno layer. The following settings are for the second option.

Things to add to a keymap files:
in config.h add
#define FORCE_NKRO
to rules.mk add
STENO_ENABLE = yes
NKRO_ENABLE = yes
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
and finally you should add the following either to your keymap.c directly, or include it from any other file:
#include "quantum.h"
#include "keymap_steno.h"
void matrix_init_user() {
steno_set_mode(STENO_MODE_GEMINI);
}

Then I made a Plover layout in my keymap.c, referencing qmk_firmware/keyboards/planck/keymaps/steno/keymap.c (important thing is to use STN_* keycodes).

This is my final layout:
Code:
[8] = {
  {STN_N1,  STN_N2,  STN_N3,  STN_N4,  STN_N5,  STN_N6,  STN_N7,  STN_N8,  STN_N9,  STN_NA,  STN_NB},
  {STN_S1,  STN_TL,  STN_PL,  STN_HL,  STN_ST1, STN_ST3, STN_FR,  STN_PR,  STN_LR,  STN_TR,  STN_DR},
  {STN_S2,  STN_KL,  STN_WL,  STN_RL,  STN_ST2, STN_ST4, STN_RR,  STN_BR,  STN_GR,  STN_SR,  STN_ZR},
  {_______, _______, _______, STN_A,   STN_O,   STN_E,   STN_U, _______, STN_PWR, STN_RES1, STN_RES2}
},
I think it's correct (I'm not really sure, it's hard to find a hand placement diagram for steno machine, plus my keyboard is 4x11, while steno machine is 2x10).

Finally after compiling and flashing (I use teensy_loader_cli) and reconnecting the keyboard, I could start Plover, but, for some reason on my system it did not see "Gemini PR" machine at first, I had to go to the settings and Scan the /dev/ttyACM0 device once, then it initialized and the Plover layer was ready to use.
To make it run at boot I checkboxed 'Enable at start' in settings of Plover, and added 'plover --gui none &' to my .xinitrc
venam
Administrators
That's some great info. I've always wanted to try out stenography.
stratex
Nixers
I decided to start with internalizing the steno key layout, because it's quite different from qwerty.
For that I've made another layer, basically like for Steno machine, but with regular qwerty keycodes:
Code:
[8] = {
  {KC_1,  KC_2,  KC_3,  KC_4,  KC_5,    KC_6,    KC_7,  KC_8,  KC_9,  _______,  _______},
  {KC_S,  KC_T,  KC_P,  KC_H,  KC_ASTR, KC_ASTR, KC_F,  KC_P,  KC_L,  KC_T,  KC_D},
  {KC_S,  KC_K,  KC_W,  KC_R,  KC_ASTR, KC_ASTR, KC_R,  KC_B,  KC_G,  KC_S,  KC_Z},
  {_______, _______, _______,  KC_A,    KC_O,    KC_E,  KC_U,  _______,   _______, _______, _______}
},

And I've made a script to practice an existing in steno keys:
Code:
#!/bin/sh
runs=$1
for i in `seq $runs`; do
        < /dev/urandom tr -dc STKPWH*FRBLGDZAOEU | head -c80;echo;
        echo '';
        echo '';
done

Then I just create a practice text file:
steno.sh 8 > practice1.txt
Open practice1.txt in vim, set my cursor on a blank line, and trying to repeat what I see above.

(27-10-2020, 03:28 AM)venam Wrote: That's some great info. I've always wanted to try out stenography.
Do you have a NKRO keyboard?
You can test it here:
http://gadzikowski.com/nkeyrollover.html
If you do, you can try it even if it's just a staggered qwerty keyboard, maybe it will hook you up in the end.
stratex
Nixers
I've been practicing key positions for some days now. I feel like I internalized them well enough, and ready to move on.

Did more research on steno. Most important terminologies I found:
Writing - common term, basically same as "typing" but used for stenography.
Chord - loosely corresponds to a syllable you type in any given word.
Theory - the overall principles you adhere to when writing on a steno keyboard.
Writing long (or long theory) - means writing phonetically, based on syllable sounds for example writing "WHOZ" for "whose", it makes it easier to remember, but impacts speed quite a lot, because the amount of chords you type tends to be similar to the amount of syllables in the original word.
Writing short (or short theory) - means relaying more on memory and heavy utilization of custom briefs, for example REFP for "representative", it makes it harder to remember, but for long words greatly increases speed.
Stroke - complete sequence of depressing and releasing a number of keys to produce the needed output.
Brief - representation of a word or a phrase mapped to a specific key combination in a dictionary, can be phonetic or seemingly random.
Dictionary - the total set of all briefs for words and phrases. Can be general in nature, or be specific, for example a Financial dictionary, containing briefs for financial words and terminologies. You can have multiple dictionaries active at the same time, plus each word can have multiple ways of writing it, as long as these ways are not in conflict with each other.
Conflict - when you have a conflict of the same strokes/words in a dictionary, happens when you migrate/combine different theories. Or make your own changes to the dictionary.
Real time - writing in real time (usually real time speech is around 180-230 WPM). 225 WPM at 95% accuracy is the graduation speed for many stenography schools.

Some additional info and my thoughts:
In steno unlike regular typing you can position all your fingers to the needed places at the same time, thus, the process of "typing out" a word with your fingers is not sequential but parallel, yet, this process of positioning fingers is not instant and takes time and mental energy, Therefore the less chords you have to type the faster you can be, that's why writing short or having short theory is so valuable in this field. But some steno schools aren't even teaching real time theories (which in practice means that their students have no chance of graduating regardless of their practice, ability to remember things or follow the curriculum. (In fact the drop out rate is something like 85% in most cases), so you can pay $20K tuition, $5K hardware 3-5 years of your life, and get basically nothing in return. This is so disgusting, my only hope is that any person with 2 brain cells would research the topic, like I did, and in case the theory is not suited him/her would ask for refund immediately, or file a lawsuit.

Total combinations - in steno you can type 2^22 (4,194,304) of possible combinations, even if you take very unrealistic figure of 300,000 total words in English language, you still will have many 'placeholders' left to fill with anything you desire, HEX color codes, emoji, function templates, long passphrases(actually no, just as a thought), macros, signatures, common replies for support role, timestamps, shortcuts or almost anything else you can imagine.

In steno there in no such thing as THE way of writing something, each stenography school teaches one of many theories, and each stenographer has his/her own dictionary by the time he/she graduates. The dictionary will also heavily reflect the field in which the stenographer operates, court stenographer may never type "C#" in his/her entire carrier.

Because of such diversity and lack of standardization, it is very difficult for a newcomer to pick "an optimal" way of learning stenography or to choose the theory one likes the most. For example I would rather prefer to study a short theory from the very beginning, but all short theories are not free, dictionaries are not shared anywhere, they kept secret behind the closed doors of these so called "school" i.e. scam institutions. Original Plover theory is built on top of StenEd by Mirabai Knight and as far as I can tell doesn't look short at all. There are one project which tries to change that and bring short writing to Plover, the "ROPE" system, it's basically one's guy dictionary shared with the community, It might be a good starting point for your own custom short dictionary.

My further plan is to read these three online books:
https://www.artofchording.com/introducti...works.html
http://www.qwertysteno.com/Home/
https://sites.google.com/site/learnplover/home
Without concentrating on exercises that much, and then go to
https://didoesdigital.com/project/typey-type/
and basically start the proper grind journey...