c1d3dbd

Pinchord · pinchord.git · Tickets · Changelog

Branches > main > c1d3dbd > files

Initial commit

Grahp, 2026-01-07

Commit: c1d3dbd98a4ab2b9817feff2655ef86bb4ee0482

4 changed files:

.gitignore added (view file)

@@ -0,0 +1,2 @@+.clj-kondo/+.lsp/

pinchord-dict.clj added (view file)

@@ -0,0 +1,284 @@+(def priority+  "Priorities used for javelin orthospelling."+  (zipmap [::pre-prefixes ::prefixes ::initials ::vowels ::finals ::suffixes]+          (rest (range))))++(comment+  (def yaml-dict (yaml/parse-string (slurp "pinchord-javelin-dictionary.yaml")))++  (->> (:letters yaml-dict)+       (filter #(= (:order %) 2))+       (map (fn [m] [(:stroke m) (:data m)]))+       (into {})))++(def initials {"T" "t",+               "TSP*" "sk"+               "TSPHR" "sv",+               "TP" "f",+               "TSWR" "kr",+               "THR" "thr",+               "TPR" "fr",+               "PWR" "br",+               "SH*" "sch",+               "TSPR" "scr",+               "TSWH" "kn",+               "TWH" "thw",+               "PWHR" "bl",+               "SPWHR" "cl",+               "TS" "st",+               "SPR" "spr",+               "SWHR" "shr",+               "HR" "l",+               "WH" "wh",+               "TW" "tw",+               "S" "s",+               "SR" "v",+               "TPWR" "dr",+               "H" "h",+               "PR" "pr",+               "TSPWR" "gr",+               "SHR" "sl",+               "SW" "sw",+               "SWR" "y",+               "TSPWH" "gh",+               "R" "r",+               "TSPR*" "squ",+               "TWR" "vr",+               "TSR" "str",+               "TWHR" "j",+               "SH" "sh",+               "PH" "m",+               "TSP" "sc",+               "TR" "tr",+               "P" "p",+               "WHR" "qu",+               "WHR*" "q",+               "TPHR" "fl",+               "TH" "th",+               "WR" "wr",+               "SPWR" "cr",+               "SPH" "sm",+               "TSW" "k",+               "SPHR" "spl",+               "TSPWHR" "gl",+               "TSWHR" "kl",+               "SPW" "c",+               "SWH" "z",+               "PHR" "pl",+               "SPWH" "ch",+               "TSPW" "g",+               "W" "w",+               "SP" "sp",+               "TSPH" "sn",+               "TPH" "n",+               "TPW" "d",+               "PW" "b"})++(def vowels {"OU" "ou",+             "AU" "au",+             "AOI" "ee",+             "AO^" "oa",+             "AU^" "ua",+             "AI^" "ia",+             "IU^" "ui",+             "IU" "e",+             "AIU" "ea",+             "OI^" "io",+             "AIU^" "ae",+             "AOU" "ei",+             "U^" "ue",+             "U" "u",+             "O" "o",+             "AO" "oo",+             "A" "a",+             "I" "i",+             "AOIU" "",+             "OIU" "oe",+             "AOU^" "ie",+             "OI" "oi",+             "OIU^" "eo",+             "AI" "ai"})++(def finals {"FS" "v"+             "FS*" "vv"+             "LFS" "lv"+             "LRFS" "nv"+             "RFS" "rv"+             "KFS" "sh"+             "LKFS" "lsh"+             "LRKFS" "nsh"+             "RKFS" "rsh"+             "KFS*" "w"+             "LKFS*" "wl"+             "LRKFS*" "wn"+             "RKFS*" "rw"+             "L" "l"+             "LR" "rl"+             "R" "r"+             "P" "p"+             "LP" "lp"+             "LRP" "mp"+             "RP" "rp"+             "PK" "b"+             "LPK" "lb"+             "LRPK" "mb"+             "RPK" "rb"+             "PF" "n"+             "LPF" "ln"+             "LRPF" "nn"+             "RPF" "rn"+             "PKFS" "g"+             "LPKFS" "lg"+             "LRPKFS" "ng"+             "RPKFS" "rg"+             "F" "f"+             "F*" "ff"+             "LF" "lf"+             "LRF" "nf"+             "LRF*" "fn" ;; :garfsmie:+             "RF" "rf"+             "PFT" "y"+             "PFT*" "yy"+             "LPFT" "ly"+             "LPFT*" "nly"+             "RPFT" "ry"+             "RPFT*" "rly"+             "LRPFT" "ny"++             "PKST" "j"+             "LPKST" "lj"+             "LRPKST" "nj"+             "RPKST" "rj"++             "PKF" "d"+             "LPKF" "ld"+             "LRPKF" "nd"+             "RPKF" "rd"+             "RPKF*" "dg"+             "KS" "x"+             "RKS" "rx"+             "LKS" "lx"+             "LRKS" "nx"+             "KST" "xt"+             "RKST" "rxt"+             "LKST" "lxt"+             "LRKST" "nxt"+             "KF" "ch"+             "LKF" "lch"+             "LRKF" "nch"+             "RKF" "rch"+             "K" "k"+             "LK" "lk"+             "LRK" "nk"+             "RK" "rk"+             "S" "s"+             "LS" "ls"+             "LRS" "ns"+             "RS" "rs"+             "PS" "m"+             "LPS" "lm"+             "LRPS" "mn"+             "RPS" "rm"+             ;"P" * "S h"+             ;"PKF" * "S gh"+             ;"PKF" * "TS ght"+             "PFS" "z"+             "LPFS" "lz"+             "LRPFS" "nz"+             "RPFS" "rz"+             "T" "t"+             "LT" "lt"+             "LRT" "nt"+             "RT" "rt"+             "ST" "st"+             "LST" "lst"+             "LRST" "nst"+             "RST" "rst"+             "PT" "pt"+             "KT" "kt"+             "FT" "ft"+             "PKFT" "ky"+             "RPKFT" "cky"+             "L*" "ll"+             "R*" "rr"+             "P*" "pp"+             "PK*" "w"+             "LPK*" "bl"+             "LRPK*" "bbl"+             "PKFS*" "gg"+             "LRPFT*" "nny"+             "PKF*" "dd"+             "LPKF*" "ddl"+             "LRPKF*" "rld"+             "KS*" "sk"+             "RKS*" "rsk"+             "LKS*" "lsk"+             "LRKS*" "nsk"+             "KST*" "sc"+             "RKST*" "rsc"+             "LKST*" "lsc"+             "LRKST*" "nsc"+             "KF*" "tch"+             "K*" "c"+             "LK*" "lc"+             "LRK*" "nc"+             "RK*" "rc"+             "S*" "ss"+             "PS*" "sp"+             ;"P*S*" "tion"+             ;"PKF*S*" "ction"+             ;"PKF*TS*" "nction"+             "PFS*" "zz"+             "T*" "tt"+             "LT*" "ttl"+             "ST*" "th"+             "LST*" "lth"+             "LRST*" "nth"+             "RST*" "rth"+             "KT*" "ct"+             "PKFT*" "cy"})++(defn finalize+  "Puts dashes before all the keys of m"+  [m]+  (update-keys m (partial str \-)))++;; Does not include empty entries since javelin doesn't...+(def layout+  {::pre-prefixes {"+" "{^}"+                   "|" "({^}"+                   "|+" "{^}-"+                   "#|+" "{^}_"}+   ::prefixes {"#" "{-|}"}+   ::initials initials+   ::vowels vowels+   ::finals (finalize finals)+   ::suffixes (finalize {"E" "e"})})++(defn javelin-dict []+  {:name "Pinchord"+   :maximumOutlineLength 1+   :starters [{:stroke "" :definition "" :mask ""}]+   :letters (->> (reduce (fn [acc [layout entries]]+                           (into acc (mapv (fn [[stroke translation]] {:stroke stroke :data translation :order (priority layout)})+                                           entries)))+                         #{} layout)+                 (sort-by (comp - count :stroke)))})++#_(defn javelin-dict []+    {:name "Pinchord"+     :maximumOutlineLength 1+     :starters [{:stroke "" :definition "" :mask ""}]+     :letters (sort-by (comp - count :stroke)+                       (for [[layout-key entries] layout+                             [stroke translation] entries]+                         {:stroke stroke+                          :data translation+                          :priority (priority layout-key)}))})++(defn generate-javelin-dict! [dict]+  (->> (yaml/generate-string dict)+       (spit "pinchord-javelin-dictionary.yaml")))++(comment+  (generate-javelin-dict! (javelin-dict)))

pinchord-javelin-dictionary.yaml added (view file)

@@ -0,0 +1,227 @@+name: Pinchord+maximumOutlineLength: 1+starters:+- {stroke: '', definition: '', mask: ''}+letters:+- {stroke: -LRPKF*, data: rld, order: 5}+- {stroke: -LRKST*, data: nsc, order: 5}+- {stroke: -LRKFS*, data: wn, order: 5}+- {stroke: -LRPFT*, data: nny, order: 5}+- {stroke: -LRPKFS, data: ng, order: 5}+- {stroke: -LRPKST, data: nj, order: 5}+- {stroke: -LRKFS, data: nsh, order: 5}+- {stroke: -LPKF*, data: ddl, order: 5}+- {stroke: -LKFS*, data: wl, order: 5}+- {stroke: -LRKST, data: nxt, order: 5}+- {stroke: -LRKS*, data: nsk, order: 5}+- {stroke: -RPFT*, data: rly, order: 5}+- {stroke: TSPWHR, data: gl, order: 3}+- {stroke: -RPKF*, data: dg, order: 5}+- {stroke: -LRPFT, data: ny, order: 5}+- {stroke: -RPKST, data: rj, order: 5}+- {stroke: -RPKFS, data: rg, order: 5}+- {stroke: -LRPK*, data: bbl, order: 5}+- {stroke: -RKST*, data: rsc, order: 5}+- {stroke: -LRPFS, data: nz, order: 5}+- {stroke: -PKFS*, data: gg, order: 5}+- {stroke: -LPKFS, data: lg, order: 5}+- {stroke: -RPKFT, data: cky, order: 5}+- {stroke: -LPFT*, data: nly, order: 5}+- {stroke: -LRPKF, data: nd, order: 5}+- {stroke: -PKFT*, data: cy, order: 5}+- {stroke: -RKFS*, data: rw, order: 5}+- {stroke: -LPKST, data: lj, order: 5}+- {stroke: -LRST*, data: nth, order: 5}+- {stroke: -LKST*, data: lsc, order: 5}+- {stroke: -LRPS, data: mn, order: 5}+- {stroke: -LRF*, data: fn, order: 5}+- {stroke: -PKF*, data: dd, order: 5}+- {stroke: -LRFS, data: nv, order: 5}+- {stroke: -PKST, data: j, order: 5}+- {stroke: -KFS*, data: w, order: 5}+- {stroke: -LKST, data: lxt, order: 5}+- {stroke: -PKFS, data: g, order: 5}+- {stroke: -LPKF, data: ld, order: 5}+- {stroke: -LRPK, data: mb, order: 5}+- {stroke: -RST*, data: rth, order: 5}+- {stroke: TSPWR, data: gr, order: 3}+- {stroke: -RPFS, data: rz, order: 5}+- {stroke: -PFS*, data: zz, order: 5}+- {stroke: -LPFS, data: lz, order: 5}+- {stroke: SPWHR, data: cl, order: 3}+- {stroke: -KST*, data: sc, order: 5}+- {stroke: -RPKF, data: rd, order: 5}+- {stroke: -PFT*, data: yy, order: 5}+- {stroke: -RKS*, data: rsk, order: 5}+- {stroke: -LRK*, data: nc, order: 5}+- {stroke: TSPWH, data: gh, order: 3}+- {stroke: -PKFT, data: ky, order: 5}+- {stroke: -RPFT, data: ry, order: 5}+- {stroke: -LRKS, data: nx, order: 5}+- {stroke: -LKS*, data: lsk, order: 5}+- {stroke: -LRST, data: nst, order: 5}+- {stroke: TSWHR, data: kl, order: 3}+- {stroke: -LRKF, data: nch, order: 5}+- {stroke: -RKST, data: rxt, order: 5}+- {stroke: -LST*, data: lth, order: 5}+- {stroke: TSPHR, data: sv, order: 3}+- {stroke: -LPK*, data: bl, order: 5}+- {stroke: -LRPF, data: nn, order: 5}+- {stroke: TSPR*, data: squ, order: 3}+- {stroke: -RKFS, data: rsh, order: 5}+- {stroke: -LKFS, data: lsh, order: 5}+- {stroke: -LPFT, data: ly, order: 5}+- {stroke: TSPW, data: g, order: 3}+- {stroke: AIU^, data: ae, order: 4}+- {stroke: SPWH, data: ch, order: 3}+- {stroke: -LRT, data: nt, order: 5}+- {stroke: SWHR, data: shr, order: 3}+- {stroke: OIU^, data: eo, order: 4}+- {stroke: -LRK, data: nk, order: 5}+- {stroke: -RKF, data: rch, order: 5}+- {stroke: -LFS, data: lv, order: 5}+- {stroke: TPWR, data: dr, order: 3}+- {stroke: TSWH, data: kn, order: 3}+- {stroke: -LRP, data: mp, order: 5}+- {stroke: -KT*, data: ct, order: 5}+- {stroke: -RKS, data: rx, order: 5}+- {stroke: SPWR, data: cr, order: 3}+- {stroke: SPHR, data: spl, order: 3}+- {stroke: -KST, data: xt, order: 5}+- {stroke: -FS*, data: vv, order: 5}+- {stroke: -RPS, data: rm, order: 5}+- {stroke: -LT*, data: ttl, order: 5}+- {stroke: -LRS, data: ns, order: 5}+- {stroke: -RST, data: rst, order: 5}+- {stroke: -PFS, data: z, order: 5}+- {stroke: TSWR, data: kr, order: 3}+- {stroke: -PFT, data: y, order: 5}+- {stroke: -PKF, data: d, order: 5}

Show all 228 lines

pinchord-javelin-system.yaml added (view file)

@@ -0,0 +1,320 @@+## Pinchord Version 7+name: "Pinchord"+## Eventually I think I could make this work with the normal extended stenotype layout?+## Requiring only the # S thing and to make ^+ maybe?+keys:+  - name: "#"+    mask: 0x01+  - name: "|"+    mask: 0x02+  - name: "+"+    mask: 0x04+  - name: "T"+    mask: 0x08+  - name: "S"+    mask: 0x10+  - name: "P"+    mask: 0x20+  - name: "W"+    mask: 0x40+  - name: "H"+    mask: 0x80+  - name: "R"+    mask: 0x100+  - name: "*"+    mask: 0x200++  - name: "A"+    mask: 0x400+  - name: "O"+    mask: 0x800+  - name: "-"+    mask: 0+    absentMask: 31744 ## match AOIU^+    presentMask: 16744448 ## Every key after AOIU^+  - name: "I"+    mask: 0x1000+  - name: "U"+    mask: 0x2000+  - name: "^"+    mask: 0x4000++  - name: "L"+    mask: 0x8000+  - name: "R"+    mask: 0x10000+  - name: "P"+    mask: 0x20000+  - name: "K"+    mask: 0x40000+  - name: "F"+    mask: 0x80000+  - name: "S"+    mask: 0x100000+  - name: "T"+    mask: 0x200000+  - name: "*"+    mask: 0x400000+  - name: "E"+    mask: 0x800000++undo: "-LR"++layout:+  - mask: 1+    name: "#"+    center: { "x": 0.5, "y": 0.06 }+    path: [+      { "c": "m", "p": [0.00454, 0] },+      { "c": "l", "p": [0.99545, 0] },+      { "c": "l", "p": [0.99545, 0.12] },+      { "c": "l", "p": [0.00454, 0.12] },+      { "c": "c" }+    ]+  - mask: 0x800000+    name: "^"+    center: { "x": 0.04545, "y": 0.275 }+    path: [+      { "c": "m", "p": [0.00454, 0.15] },+      { "c": "rl", "p": [0.08181, 0] },+      { "c": "rl", "p": [0, 0.25] },+      { "c": "rl", "p": [-0.08181, 0] },+      { "c": "c" }+    ]+  - mask: 0x1000000+    name: "+"+    center: { "x": 0.04545, "y": 0.53 }+    path: [+      { "c": "m", "p": [0.00454, 0.41] },+      { "c": "rl", "p": [0.08181, 0] },+      { "c": "rl", "p": [0, 0.17] },+      { "c": "rq", "p": [0, 0.12, -0.08181, 0.12, -0.08181, 0] },+      { "c": "c" }+    ]+  - mask: 2+    name: "S"+    center: { "x": 0.13636, "y": 0.4 }+    path: [+      { "c": "m", "p": [0.09545, 0.15] },+      { "c": "rl", "p": [0.08181, 0] },

Show all 321 lines