Skip to content

Instantly share code, notes, and snippets.

@morinted
Last active April 2, 2024 20:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save morinted/55426f851831e87d239d to your computer and use it in GitHub Desktop.
Save morinted/55426f851831e87d239d to your computer and use it in GitHub Desktop.
Plover dictionary brainstorming

Right now Plover stores strokes as "STROKE": "definition".

This is great and easy, but lacks extendability.

A couple things that occur:

  • hard to find when a word has multiple strokes
  • Inability to add inline notes or to define strokes as briefs or whatnot

Take a look at a proposed restructuring:

{
  "beside": {
    "strokes": {
      "P-DZ": "misstroke",
      "PW-DZ": "brief",
      "PWAOE/SAOEUD": "phonetic",
      "PWE/SAOEUD": "phonetic",
      "SPWAOEUD": "reversal",
      "W-DZ": ""
    },
    "note": "DZ is at the right 'side' of the board!"
  },
  "favorite": {
    "strokes": {
      "TPAEUFRT": "brief"
    },
    "note": "",
    "british": "favourite"
  }
}

Notes:

  • Each stroke has an optional definition. Here you can write anything, and by default these would be blank. However, if you want to label certain strokes it is easy to do so.
  • All strokes are organized by the word/definition, so if you want to see all the stroke for a word, it's super easy.
  • It lets you define a stroke for an existing command (see: vim commands) much easier by just adding to a list.
  • As in the favorite example, you can see how easy it would be to add a variant spelling. In this case, I gave a British key that, given a setting in Plover, could allow setting Plover into "British" spelling without any change in the dictionary.

But there are some caveats:

  • Now you cannot as easily tell if a stroke is already defined. However, there is no reason Plover can't tell you when you have conflicting strokes. However, it is still on the user to check if a certain stroke has been defined before.
  • There's a lot more to do in the dictionary, and users might feel overwhelmed due to all these blank spaces where they might feel they need to write stuff, even though it's completely optional.

That being said, I think it's awesome. If you decide to make a sort of custom brief and you want to remember every time you do, it's kind of like a keyword. Then you could search for all your "reversal" strokes and such. Basically, it's like holding @ezyang's steno dictionary on your person to a degree. Awesome.

Converting the current dictionary to this format would be easy, but maintaining it may prove a slightly bigger challenge.

And all of Plover's support on the forums would be invalid. People often say something like:

Just redefine tab like this: "TA*B": "{^}{#Tab}{^}", to avoid spacing problems.

This new format would be like this:

Just redefine tab like this: "{^}{#Tab}{^}": { "strokes" { "TA*B": "" } }, to avoid spacing problems.

It's less compact for "one-off" strokes. All this to say that JSON is not the limiting factor.

Cheers, Ted

@nailtekus
Copy link

My knowledge of machine stenography says there will be words that have to be more than one stroke. I'm new to this plover thing, and really looking forward to investigating the information here! I plan to write a theory too for machine stenography. Thanks for having me!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment