Skip to content

Instantly share code, notes, and snippets.

@lambdadog
Last active September 24, 2019 03:45
Show Gist options
  • Save lambdadog/8b243a83cdc86f5786e2950a83afc4bd to your computer and use it in GitHub Desktop.
Save lambdadog/8b243a83cdc86f5786e2950a83afc4bd to your computer and use it in GitHub Desktop.
FPLT-fingerspelling modifier keys (intended to be used on top of https://github.com/didoesdigital/steno-dictionaries/blob/master/dictionaries/fingerspelling-FPLT.json )
{
"SKWR-RBGS": "{#alt(control(shift(j)))}",
"H-FPLS": "{#control(h)}",
"KW-FPGS": "{#control(shift(q))}",
"TPH-RBLT": "{#alt(shift(n))}",
"PW-RPLT": "{#alt(b)}",
"PH-FPLS": "{#control(m)}",
"R-RBLT": "{#alt(shift(r))}",
"PW-RPLS": "{#alt(control(b))}",
"TKPW-FPGS": "{#control(shift(g))}",
"SR-FPGS": "{#control(shift(v))}",
"SP-FPLS": "{#control(space)}",
"TK-FPGS": "{#control(shift(d))}",
"TK-RPLT": "{#alt(d)}",
"TK-FPLS": "{#control(d)}",
"SP-RPLS": "{#alt(control(space))}",
"AFPLS": "{#control(a)}",
"PH-FPGS": "{#control(shift(m))}",
"R-RBGS": "{#alt(control(shift(r)))}",
"SKWR-FPLS": "{#control(j)}",
"H-RPLT": "{#alt(h)}",
"UFPGS": "{#control(shift(u))}",
"H-RBGS": "{#alt(control(shift(h)))}",
"S-RBLT": "{#alt(shift(s))}",
"EUFPGS": "{#control(shift(i))}",
"PW-FPLS": "{#control(b)}",
"S-FPLS": "{#control(s)}",
"TP-RPLT": "{#alt(f)}",
"TP-FPLS": "{#control(f)}",
"W-FPLS": "{#control(w)}",
"P-RPLT": "{#alt(p)}",
"TKPW-FPLS": "{#control(g)}",
"STKPW-RPLT": "{#alt(z)}",
"STKPW-FPLS": "{#control(z)}",
"K-RBLT": "{#alt(shift(k))}",
"STKPW-RPLS": "{#alt(control(z))}",
"T-RBLT": "{#alt(shift(t))}",
"TKPW-RBGS": "{#alt(control(shift(g)))}",
"TP-RBLT": "{#alt(shift(f))}",
"SP-RBGS": "{#alt(control(shift(space)))}",
"PW-RBLT": "{#alt(shift(b))}",
"TK-RBGS": "{#alt(control(shift(d)))}",
"PW-FPGS": "{#control(shift(b))}",
"ORPLT": "{#alt(o)}",
"KR-RPLS": "{#alt(control(c))}",
"HR-FPGS": "{#control(shift(l))}",
"KR-RPLT": "{#alt(c)}",
"ORPLS": "{#alt(control(o))}",
"SR-RPLS": "{#alt(control(v))}",
"SKWR-RPLS": "{#alt(control(j))}",
"KWR-RBLT": "{#alt(shift(y))}",
"KR-FPGS": "{#control(shift(c))}",
"KP-RPLS": "{#alt(control(x))}",
"ARBLT": "{#alt(shift(a))}",
"URBGS": "{#alt(control(shift(u)))}",
"KP-RPLT": "{#alt(x)}",
"KWR-FPLS": "{#control(y)}",
"KP-FPGS": "{#control(shift(x))}",
"AFPGS": "{#control(shift(a))}",
"P-RBGS": "{#alt(control(shift(p)))}",
"SP-FPGS": "{#control(shift(space))}",
"TP-RPLS": "{#alt(control(f))}",
"TKPW-RBLT": "{#alt(shift(g))}",
"KP-RBLT": "{#alt(shift(x))}",
"EURBLT": "{#alt(shift(i))}",
"KW-RBGS": "{#alt(control(shift(q)))}",
"P-FPGS": "{#control(shift(p))}",
"HR-RBLT": "{#alt(shift(l))}",
"PW-RBGS": "{#alt(control(shift(b)))}",
"KW-RBLT": "{#alt(shift(q))}",
"TP-FPGS": "{#control(shift(f))}",
"SKWR-RPLT": "{#alt(j)}",
"SR-RPLT": "{#alt(v)}",
"PH-RBLT": "{#alt(shift(m))}",
"R-FPLS": "{#control(r)}",
"S-RPLS": "{#alt(control(s))}",
"S-RPLT": "{#alt(s)}",
"H-FPGS": "{#control(shift(h))}",
"ERPLT": "{#alt(e)}",
"TPH-RPLT": "{#alt(n)}",
"TPH-RPLS": "{#alt(control(n))}",
"ERPLS": "{#alt(control(e))}",
"K-RBGS": "{#alt(control(shift(k)))}",
"TPH-FPLS": "{#control(n)}",
"TK-RPLS": "{#alt(control(d))}",
"P-RPLS": "{#alt(control(p))}",
"KP-RBGS": "{#alt(control(shift(x)))}",
"S-FPGS": "{#control(shift(s))}",
"SR-RBLT": "{#alt(shift(v))}",
"K-FPGS": "{#control(shift(k))}",
"SR-FPLS": "{#control(v)}",
"SR-RBGS": "{#alt(control(shift(v)))}",
"S-RBGS": "{#alt(control(shift(s)))}",
"OFPGS": "{#control(shift(o))}",
"T-FPGS": "{#control(shift(t))}",
"H-RPLS": "{#alt(control(h))}",
"PH-RPLT": "{#alt(m)}",
"KWR-RBGS": "{#alt(control(shift(y)))}",
"EURBGS": "{#alt(control(shift(i)))}",
"HR-RBGS": "{#alt(control(shift(l)))}",
"PH-RPLS": "{#alt(control(m))}",
"SKWR-RBLT": "{#alt(shift(j))}",
"EUFPLS": "{#control(i)}",
"SP-RBLT": "{#alt(shift(space))}",
"SKWR-FPGS": "{#control(shift(j))}",
"R-RPLS": "{#alt(control(r))}",
"R-RPLT": "{#alt(r)}",
"HR-RPLS": "{#alt(control(l))}",
"HR-RPLT": "{#alt(l)}",
"KR-RBLT": "{#alt(shift(c))}",
"OFPLS": "{#control(o)}",
"HR-FPLS": "{#control(l)}",
"KR-FPLS": "{#control(c)}",
"STKPW-RBLT": "{#alt(shift(z))}",
"K-RPLS": "{#alt(control(k))}",
"K-RPLT": "{#alt(k)}",
"K-FPLS": "{#control(k)}",
"TKPW-RPLS": "{#alt(control(g))}",
"TKPW-RPLT": "{#alt(g)}",
"KW-FPLS": "{#control(q)}",
"KWR-FPGS": "{#control(shift(y))}",
"KW-RPLT": "{#alt(q)}",
"KW-RPLS": "{#alt(control(q))}",
"T-RBGS": "{#alt(control(shift(t)))}",
"W-RBLT": "{#alt(shift(w))}",
"H-RBLT": "{#alt(shift(h))}",
"ERBGS": "{#alt(control(shift(e)))}",
"ERBLT": "{#alt(shift(e))}",
"URPLT": "{#alt(u)}",
"W-RBGS": "{#alt(control(shift(w)))}",
"URPLS": "{#alt(control(u))}",
"P-RBLT": "{#alt(shift(p))}",
"KR-RBGS": "{#alt(control(shift(c)))}",
"ARBGS": "{#alt(control(shift(a)))}",
"T-RPLT": "{#alt(t)}",
"KP-FPLS": "{#control(x)}",
"T-FPLS": "{#control(t)}",
"ORBGS": "{#alt(control(shift(o)))}",
"P-FPLS": "{#control(p)}",
"PH-RBGS": "{#alt(control(shift(m)))}",
"R-FPGS": "{#control(shift(r))}",
"W-FPGS": "{#control(shift(w))}",
"W-RPLT": "{#alt(w)}",
"ORBLT": "{#alt(shift(o))}",
"W-RPLS": "{#alt(control(w))}",
"KWR-RPLS": "{#alt(control(y))}",
"KWR-RPLT": "{#alt(y)}",
"TP-RBGS": "{#alt(control(shift(f)))}",
"EFPLS": "{#control(e)}",
"EURPLT": "{#alt(i)}",
"EURPLS": "{#alt(control(i))}",
"SP-RPLT": "{#alt(space)}",
"URBLT": "{#alt(shift(u))}",
"TK-RBLT": "{#alt(shift(d))}",
"UFPLS": "{#control(u)}",
"EFPGS": "{#control(shift(e))}",
"STKPW-RBGS": "{#alt(control(shift(z)))}",
"TPH-FPGS": "{#control(shift(n))}",
"STKPW-FPGS": "{#control(shift(z))}",
"ARPLS": "{#alt(control(a))}",
"T-RPLS": "{#alt(control(t))}",
"ARPLT": "{#alt(a)}",
"TPH-RBGS": "{#alt(control(shift(n)))}"
}
#!/usr/bin/env python
import json
LETTERS = {
'A': 'a',
'PW-': 'b',
'KR-': 'c',
'TK-': 'd',
'E': 'e',
'TP-': 'f',
'TKPW-': 'g',
'H-': 'h',
'EU': 'i',
'SKWR-': 'j',
'K-': 'k',
'HR-': 'l',
'PH-': 'm',
'TPH-': 'n',
'O': 'o',
'P-': 'p',
'KW-': 'q',
'R-': 'r',
'S-': 's',
'T-': 't',
'U': 'u',
'SR-': 'v',
'W-': 'w',
'KP-': 'x',
'KWR-': 'y',
'STKPW-': 'z',
'SP-': 'space'
}
# Rules:
# - F -> R = alt
# - T -> S = ctrl
# - -PL -> -BG ~= shift
# Since shift is rarely used on its own, I took an ergonomic approach to it (by
# which I mean, whatever felt best to my hands when experimenting). Alt and
# Control "blur into" shift, which means that you only use the key closest for
# shift unless you're using all three, in which case you use RBGS.
MODIFIERS = {
'RPLT': '{#alt(%s)}',
'FPLS': '{#control(%s)}',
'RPLS': '{#alt(control(%s))}',
'FPGS': '{#control(shift(%s))}',
'RBLT': '{#alt(shift(%s))}',
'RBGS': '{#alt(control(shift(%s)))}'
}
data = {}
for l,v in LETTERS.items():
for r,t in MODIFIERS.items():
data[l + r] = t % v
print(json.dumps(data))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment