pinchord-14 Chords Format
Pinchord · pinchord.git · Tickets · Changelog
A Pinchord Ticket (Closed):
Ticket · History
- August 8, 2026 Add all the things (title: Chords Format)
Changes
@@ -0,0 +1,47 @@+---+title: Chords Format+permalink: pinchord/chords-format/+ticket: open+---++*A [[pinchord-tickets|Pinchord Ticket]] (Open):*++[[Pinchord|Pinchord]] has always meant to be an extensible system. [[Home|I]] made a set of chords that I like - they happen to be particularly pinky-heavy, favor ease of memorization and consistency over speed and ergonomics, and are purely for the English language.++These things are not for everyone, and nothing about the nature of Pinchord or its implementation bakes these ideas in, they're just my preferences that I encoded into the chords themselves.++So naturally, a few people who have learned Pinchord have designed their own derivations. These are great, and they should be well supported, but they are not.++Pinchord sits on the two major hobbyist steno engines, Plover and Javelin, and is implemented separately on them both. Plover is an application written in Python, and you can use Python dictionaries to create basically whatever behavior you want. Javelin is an embedded firmware written in C++, and does not have a trivial method of extension, or an equivalent to Python dictionaries[^1]. Javelin has a built-in [[Steno Glossary#Orthospelling|orthospelling]] dictionary format in yaml, which Pinchord (ab)uses to get its intended behavior.++When I update Pinchord's chords, I edit the yaml dictionary and the Python dictionary separately, and ship them both. When I update Pinchord's _behavior_, I have to figure out how to implement that behavior separately on Plover and Javelin, often delaying things that are trivial to fix on Plover because they are very much not on Javelin :p++It's kind of too much work to impose on someone modifying Pinchord, who, invariably, almost certainly uses _either_ Plover _or_ Javelin, leading to the obvious an easiest choice of implementing their derivation as _either_ a Python dictionary _or_ a yaml orthospelling dictionary.++As a user of this derivation, of course, you may be on Plover or Javelin as well, but that derivation might not have an implementation for your engine. I would love to recommend different derivations of Pinchord to people with different needs, but right now Pinchord itself (with the default chords) is the most usable because I put in all this work that I'm sure nobody ~~else~~ wants to :p++This fragmentation of implementation is a symptom of there being no common ground between these engines when it comes to a system like Pinchord[^2], so one should be made.++I'm sure this lack of expression is limiting the extremely vast set of implementations that could and should exist for this type of system.++Alternate keyboard layout users and creators, who are one half of Pinchord's target audience, are used to fitting layouts to their needs and being able to update and share these layouts trivially, which Pinchord is severely lacking.++A standard format for representing, modifying, and sharing Pinchord derivations would bridge the gap between the two engines, and give an easy and obvious way for users to fit the layout to their needs, and to share that with other users.++While there's nothing _wrong_ with Pinchord's chords, they're just not for everyone - nor are any other set of chords. These things are personal, and there are just way too many factors to optimize for and trade-offs to make.++## Implementation++Plover and Javelin use entirely separate formats for representing orthospelling, so it seems that a single format either has to:+1. Be one of the existing formats, and/or+2. Compile/translate to one or both of the existing formats++Either fitting Plover's Python dictionary to generate Javelin files when run, or implementing Javelin's yaml orthospelling format in Plover, seem to be the two obvious options to me, but there's more thinking to do here.++---++Footnotes even though I hate footnotes:++[^1]: Javelin does have Javelin script, a DSL for scripting keyboards, which I have been toying with to get this behavior, but it's definitely not as first-class as Python dictionaries are. I believe it is also possible to build Javelin firmware with custom dictionaries written in C++. I haven't tried this, and it does require building firmware from the Javelin repo rather than through the web tools. I'm sure I could figure this out, but I definitely don't want to require that anyone who wants to modify Pinchord has to build it themselves, when a very friendly web tool exists that does all this for you.++[^2]: I should mention that Javelin does a perfectly fine job of emulating Plover's behavior for traditional steno theories, which are implemented as [[Steno Glossary#JSON Dictionary|JSON dictionaries]] in a bespoke format that Plover created and Javelin implemented with perfect enough parity for normal usage. Neither of these engines were designed to do the things I'm doing. That is _very_ obvious when implementing all this stuff, hopefully it is not obvious at all when using it. - August 29, 2026 Edited
Changes
@@ -16,7 +16,7 @@ When I update Pinchord's chords, I edit the yaml dictionary and the Python dictionary separately, and ship them both. When I update Pinchord's _behavior_, I have to figure out how to implement that behavior separately on Plover and Javelin, often delaying things that are trivial to fix on Plover because they are very much not on Javelin :p -It's kind of too much work to impose on someone modifying Pinchord, who, invariably, almost certainly uses _either_ Plover _or_ Javelin, leading to the obvious an easiest choice of implementing their derivation as _either_ a Python dictionary _or_ a yaml orthospelling dictionary.+It's kind of too much work to impose on someone modifying Pinchord, who, invariably, almost certainly uses _either_ Plover _or_ Javelin, leading to the obvious and easiest choice of implementing their derivation as _either_ a Python dictionary _or_ a yaml orthospelling dictionary. As a user of this derivation, of course, you may be on Plover or Javelin as well, but that derivation might not have an implementation for your engine. I would love to recommend different derivations of Pinchord to people with different needs, but right now Pinchord itself (with the default chords) is the most usable because I put in all this work that I'm sure nobody ~~else~~ wants to :p - August 29, 2026 Edited
Changes
@@ -38,6 +38,8 @@ Either fitting Plover's Python dictionary to generate Javelin files when run, or implementing Javelin's yaml orthospelling format in Plover, seem to be the two obvious options to me, but there's more thinking to do here. +Att: [[pinchord-chords-format-implementation]]+ --- Footnotes even though I hate footnotes: - August 29, 2026 Edited
Changes
@@ -6,6 +6,8 @@ *A [[pinchord-tickets|Pinchord Ticket]] (Open):* +*[[pinchord-git]] branch: `chords-format`*+ [[Pinchord|Pinchord]] has always meant to be an extensible system. [[Home|I]] made a set of chords that I like - they happen to be particularly pinky-heavy, favor ease of memorization and consistency over speed and ergonomics, and are purely for the English language. These things are not for everyone, and nothing about the nature of Pinchord or its implementation bakes these ideas in, they're just my preferences that I encoded into the chords themselves. - August 29, 2026 Edited
Changes
@@ -40,7 +40,7 @@ Either fitting Plover's Python dictionary to generate Javelin files when run, or implementing Javelin's yaml orthospelling format in Plover, seem to be the two obvious options to me, but there's more thinking to do here. -Att: [[pinchord-chords-format-implementation]]+Att: [[pinchord-att-chords-format-implementation]] --- - September 1, 2026 Edited
Changes
@@ -6,6 +6,8 @@ *A [[pinchord-tickets|Pinchord Ticket]] (Open):* +- TODO, close, probably merge with build-process, or derivation, or whatever. Or perhaps this is fine :p+ *[[pinchord-git]] branch: `chords-format`* [[Pinchord|Pinchord]] has always meant to be an extensible system. [[Home|I]] made a set of chords that I like - they happen to be particularly pinky-heavy, favor ease of memorization and consistency over speed and ergonomics, and are purely for the English language. - September 1, 2026 Edited
Changes
@@ -7,6 +7,7 @@ *A [[pinchord-tickets|Pinchord Ticket]] (Open):* - TODO, close, probably merge with build-process, or derivation, or whatever. Or perhaps this is fine :p+- Either way, this is just rambling, so update this ticket or close it *[[pinchord-git]] branch: `chords-format`* - October 20, 2026 Change formatting
Changes
@@ -9,9 +9,9 @@ - TODO, close, probably merge with build-process, or derivation, or whatever. Or perhaps this is fine :p - Either way, this is just rambling, so update this ticket or close it -*[[pinchord-git]] branch: `chords-format`*+*[[pinchord.git]] branch: `chords-format`* -[[Pinchord|Pinchord]] has always meant to be an extensible system. [[Home|I]] made a set of chords that I like - they happen to be particularly pinky-heavy, favor ease of memorization and consistency over speed and ergonomics, and are purely for the English language.+[[Pinchord]] has always meant to be an extensible system. [[Home|I]] made a set of chords that I like - they happen to be particularly pinky-heavy, favor ease of memorization and consistency over speed and ergonomics, and are purely for the English language. These things are not for everyone, and nothing about the nature of Pinchord or its implementation bakes these ideas in, they're just my preferences that I encoded into the chords themselves. @@ -43,7 +43,7 @@ Either fitting Plover's Python dictionary to generate Javelin files when run, or implementing Javelin's yaml orthospelling format in Plover, seem to be the two obvious options to me, but there's more thinking to do here. -Att: [[pinchord-att-chords-format-implementation]]+Att: [[pinchord-att-chords-format-implementation|attachment: chords format implementation]] --- - October 21, 2026 Update the rest of the ticket pages to use numbers (renamed from pinchord-chords-format.md, status: none → open, category: none → unscreened, type: none → addition)
Changes
@@ -1,11 +1,12 @@ --- title: Chords Format-permalink: pinchord/chords-format/-ticket: open+status: open+category: unscreened+type: addition+redirect_from:+ - pinchord/chords-format/ --- -*A [[pinchord-tickets|Pinchord Ticket]] (Open):*- - TODO, close, probably merge with build-process, or derivation, or whatever. Or perhaps this is fine :p - Either way, this is just rambling, so update this ticket or close it - October 23, 2026 Remove trailing slashes
Changes
@@ -4,7 +4,7 @@ category: unscreened type: addition redirect_from:- - pinchord/chords-format/+ - pinchord/chords-format --- - TODO, close, probably merge with build-process, or derivation, or whatever. Or perhaps this is fine :p - October 24, 2026 Removed screened/unscreened pinchord tickets, just make them all open (category: unscreened → none)
Changes
@@ -1,7 +1,6 @@ --- title: Chords Format status: open-category: unscreened type: addition redirect_from: - pinchord/chords-format - October 24, 2026 Rename tickets to <project>-<number> <title> (renamed from pinchord@14.md, title: Chords Format → none)
Changes
@@ -1,5 +1,4 @@ ----title: Chords Format status: open type: addition redirect_from: - October 24, 2026 Replace ticket status, category and resolution with ticket (status: open → none)
Changes
@@ -1,5 +1,5 @@ ----status: open+ticket: open type: addition redirect_from: - pinchord/chords-format - October 24, 2026 Edited
Changes
@@ -16,7 +16,7 @@ So naturally, a few people who have learned Pinchord have designed their own derivations. These are great, and they should be well supported, but they are not. -Pinchord sits on the two major hobbyist steno engines, Plover and Javelin, and is implemented separately on them both. Plover is an application written in Python, and you can use Python dictionaries to create basically whatever behavior you want. Javelin is an embedded firmware written in C++, and does not have a trivial method of extension, or an equivalent to Python dictionaries[^1]. Javelin has a built-in [[Steno Glossary#Orthospelling|orthospelling]] dictionary format in yaml, which Pinchord (ab)uses to get its intended behavior.+Pinchord sits on the two major hobbyist steno engines, Plover and Javelin, and is implemented separately on them both. Plover is an application written in Python, and you can use Python dictionaries to create basically whatever behavior you want. Javelin is an embedded firmware written in C++, and does not have a trivial method of extension, or an equivalent to Python dictionaries[^1]. Javelin has a built-in [[Steno Glossary#orthospelling]] dictionary format in yaml, which Pinchord (ab)uses to get its intended behavior. When I update Pinchord's chords, I edit the yaml dictionary and the Python dictionary separately, and ship them both. When I update Pinchord's _behavior_, I have to figure out how to implement that behavior separately on Plover and Javelin, often delaying things that are trivial to fix on Plover because they are very much not on Javelin :p - October 24, 2026 Edited
Changes
@@ -1,14 +1,13 @@ ----ticket: open+ticket: closed type: addition redirect_from: - pinchord/chords-format --- -- TODO, close, probably merge with build-process, or derivation, or whatever. Or perhaps this is fine :p-- Either way, this is just rambling, so update this ticket or close it+*Closed, Javelin support has been dropped* -*[[pinchord.git]] branch: `chords-format`*+[[pinchord.git]] branch: `chords-format` [[Pinchord]] has always meant to be an extensible system. [[Home|I]] made a set of chords that I like - they happen to be particularly pinky-heavy, favor ease of memorization and consistency over speed and ergonomics, and are purely for the English language.