85d6fd4
Pinchord · pinchord.git · Tickets · Changelog
Branches > serial-mods > 85d6fd4 > files / plover_pinchord / dictionaries
Add plover python dictionary
Commit: 85d6fd4f32206b2cf3232b80006690a9ff8c5900
Parent: 871970f
3 changed files:
plover_pinchord/dictionaries/pinchord-v25.0.py 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 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 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