85d6fd4

Pinchord · pinchord.git · Tickets · Changelog

Branches > build-process > 85d6fd4 > files

Add plover python dictionary

Grahp, 2026-01-31

Commit: 85d6fd4f32206b2cf3232b80006690a9ff8c5900
Parent: 871970f

3 changed files:

plover_pinchord/dictionaries/pinchord-v25.0.py added (view file)

@@ -0,0 +1,346 @@+## Pinchord Plover python dictionary+import re++## Longest valid outline, Pinchord only needs one stroke outlines :)+LONGEST_KEY = 1++BANKS = ["prefixes", "initials", "vowels", "finals", "suffixes"]++## Specified by 'chords.edn' (https://grahp.dev/pinchord.git/chords.edn)+## Unlike Shrimple, Pinchord enumerates all bank chords!+DICT = {+    "prefixes": {+        "#": "{-|}",+        "#+": "{^}{-|}",+        "#+": "{^}{-|}",+        "_": "{^}_",+        "_+": "{^}-",+        "#_": "{^}_{-|}",+        "#_+": "{^}-{-|}",+    },++    "initials": {+        "T": "t",+        "TSP&": "sk",+        "TP": "f",+        "TP&": "ph",+        "TSWR": "kr",+        "THR": "thr",+        "TPR": "fr",+        "PWR": "br",+        "SH&": "sch",+        "TSPR": "scr",+        "TSPR&": "skr",+        "TSWH": "kn",+        "TWH": "thw",+        "PWHR": "bl",+        "SPWHR": "cl",+        "TS": "st",+        "SPR": "spr",+        "SHR&": "shr",+        "HR": "l",+        "WH": "wh",+        "TW": "tw",+        "S": "s",+        "SR": "v",+        "SR&": "vr",+        "TPWR": "dr",+        "TPWH": "x",+        "H": "h",+        "PR": "pr",+        "TSPWR": "gr",+        "SHR": "sl",+        "SW": "sw",+        "SW&": "sv",+        "SWR": "y",+        "TSPWH": "gh",+        "R": "r",+        "SWHR": "squ",+        "TSR": "str",+        "TWHR": "j",+        "SH": "sh",+        "PH": "m",+        "TSP": "sc",+        "TR": "tr",+        "P": "p",+        "WHR": "qu",+        "WHR&": "q",+        "TPHR": "fl",+        "TPHR&": "phl",+        "TPR&": "phr",+        "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",+        "": "{^}",+    },++   "vowels": {+       "OU": "ou",+       "AU": "au",+       "AOI": "ei",+       "AO": "oa",+       "AO^": "ao",+       "AU^": "ua",+       "AI^": "ia",+       "IU^": "ee",+       "IU": "e",+       "AIU": "ea",+       "OI^": "io",+       "AIU^": "ae",+       "AOU": "ui",+       "AOI^": "ie",+       "U": "u",+       "O": "o",+       "O^": "oo",+       "A": "a",+       "A^": "aa",+       "I": "i",+       "I^": "eu",+       "^": "y",+       "OIU": "oe",+       "AOU^": "iu",+       "OI": "oi",+       "OIU^": "eo",+       "U^": "ue",+       "AI": "ai",+    },++    "finals": {+        "FS": "v",+        "FS*": "vv",+        "LFS": "lv",+        "LRFS": "nv",+        "RFS": "rv",+        "KFS": "sh",+        "LKFS": "lsh",+        "LRKFS": "nsh",+        "RKFS": "rsh",+        "PST": "w",+        "L": "l",+        "LR": "rl",+        "LR*": "rly",+        "R": "r",+        "P": "p",+        "LP": "lp",+        "LP*": "pl",+        "LRP": "mp",+        "RP": "rp",+        "PK": "b",+        "LPK": "lb",+        "LRPK": "mb",+        "RPK": "rb",+        "PF": "n",+        "LPF": "ln",+        "LRPF": "nn",+        "RPF": "rn",+        "PKFS": "g",+        "LPKFS": "lg",+        "LPKFS*": "gl",+        "LRPKFS": "ng",+        "LRPKFS*": "gn",+        "RPKFS": "rg",+        "RPKFS*": "dg",+        "KFS*": "gh",+        "KFST*": "ght",+        "F": "f",+        "F*": "ff",+        "LF": "lf",+        "LRF": "nf",+        "LRF*": "fn",+        "RF": "rf",+        "PFT": "y",+        "PFT*": "yy",+        "LPFT": "ly",+        "RPFT*": "nly",+        "LRPFT*": "nny",+        "LPFT*": "lly",+        "RPFT": "ry",+        "LRPFT": "ny",++        "PKST": "ct",+        "LPKST": "lct",+        "LRPKST": "nct",+        "RPKST": "rct",++        "PKF": "d",+        "LPKF": "ld",+        "LRPKF": "nd",+        "RPKF": "rd",++        "PKF*": "dd",+        "LPKF*": "ndl",+        "LRPKF*": "ddl",+        "RPKF*": "rld",++        "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",+        "K*": "ck",+        "LK*": "lck",+        "LRK*": "nck",+        "RK*": "rck",+        "LK": "lk",+        "LRK": "nk",+        "RK": "rk",+        "S": "s",+        "LS": "ls",+        "LRS": "ns",+        "RS": "rs",+        "PS": "m",+        "LPS": "lm",+        "LRPS": "mn",+        "RPS": "rm",+        "PFS": "z",+        "LPFS": "lz",+        "LRPFS": "nz",+        "RPFS": "rz",+        "T": "t",+        "LT": "lt",+        "LRT": "nt",+        "RT": "rt",+        "RT*": "rty",+        "ST": "st",+        "ST*": "ts",+        "LST": "lst",+        "LRST": "nst",+        "RST": "rst",+        "PT": "pt",+        "LPT": "lpt",+        "LRPT": "npt",+        "RPT": "rpt",++        "KT": "kt",+        "KT*": "h",+        "PKT*": "ph",+        "PKT": "hp",+        "LKT": "lkt",+        "LRKT": "nkt",+        "RKT": "rkt",+        "FT": "ft",+        "LFT": "lft",+        "LRFT": "nft",+        "RFT": "rft",+        "KFT": "tch",+        "LKFT": "ltch",+        "LRKFT": "ntch",+        "RKFT": "rtch",+        "PKFT": "ky",+        "LPKFT": "lky",+        "LRPKFT": "nky",+        "RPKFT": "rky",+        "PKFT*": "cky",+        "LPKFT*": "lcky",+        "LRPKFT*": "ncky",+        "RPKFT*": "rcky",+        "L*": "ll",+        "R*": "rr",+        "P*": "pp",+        "PF*": "w",+        "LPF*": "wl",+        "LRPF*": "wn",+        "RPF*": "rw",+        "LPK*": "bl",+        "LRPK*": "bbl",+        "PKFS*": "gg",+        "KS*": "sk",+        "RKS*": "rsk",+        "LKS*": "lsk",+        "LRKS*": "nsk",++        "PKS*": "sc",+        "LPKS*": "lsc",+        "LRPKS*": "nsc",+        "RPKS*": "rsc",++        "KST*": "j",+        "RKST*": "rj",+        "LKST*": "lj",+        "LRKST*": "nj",++        "PKS": "c",+        "LPKS": "lc",+        "LRPKS": "nc",+        "RPKS": "rc",+        "S*": "ss",+        "PS*": "sp",+        "PFS*": "zz",+        "T*": "tt",+        "LT*": "ttl",++        "FST": "th",+        "LFST": "lth",+        "LFST*": "lfth",+        "LRFST": "nth",+        "RFST": "rth",+        "RFST*": "rmth",++        "PKFST": "cy",+        "PKFST*": "sy",+        "LPKFST": "lcy",+        "LRPKFST": "ncy",+        "RPKFST": "rcy",+    },++    "suffixes": {+        "E": "e",+    },+}++BANK_SPLITTING_REGEX = r"(_?#?\+?)(T?S?P?W?H?R?&?)(A?O?I?U?^?)(L?R?P?K?F?S?T?\*?)(E?)"++EMTPY_TRANSLATION = ""++def banks(stroke):+    match = re.match(BANK_SPLITTING_REGEX, stroke)+    if match:+        prefix, initials, vowels, finals, suffixes = match.groups()+        return {"prefixes": prefix, "initials": initials, "vowels": vowels, "finals": finals, "suffixes": suffixes}+    else:+        return None++def build_translation(stroke_banks):+    translation = ""+    for bank in BANKS:+        keys = stroke_banks.get(bank) or ""+        translation += DICT[bank].get(keys, "")+    return translation++def lookup_stroke(stroke):+    stroke_banks = banks(stroke)+    if stroke_banks:+        return build_translation(stroke_banks)+    else:+        return EMTPY_TRANSLATION++def lookup(outline):+    if len(outline) > LONGEST_KEY:+        return EMTPY_TRANSLATION+    else:+        stroke = outline[0]+        return lookup_stroke(stroke)

plover_pinchord/system.py modified (view file)

@@ -16,7 +16,7 @@ UNDO_STROKE_STENO = "-LR"  DICTIONARIES_ROOT = "asset:plover_pinchord:dictionaries"-DEFAULT_DICTIONARIES = ('user.json',)+DEFAULT_DICTIONARIES = ("user.json", "pinchord-v25.0.py")  KEYMAPS = {   "Keyboard": {

setup.cfg modified (view file)

@@ -1,6 +1,6 @@ [metadata] name = Pinchord-version = v24.1+version = v25.0 description = Chorded Typing System long_description = file:plover-description.md long_description_content_type = text/markdown@@ -18,6 +18,7 @@ 	setuptools>=30.3.0 install_requires = 	plover>=4.0.0+	plover-python-dictionary include_package_data = True packages = 	plover_pinchord