Plover with Emacs

Table of Contents


ATTENTION: This document and the corresponding dictionary are under active development! To be notified of changes, star or watch the repository.

Roadmap: v2.0 - control, meta/alt, shift combinations of the English alphabet and symbols

Get the Plover Emacs dictionary here.

1. Opening bracket

Stenography is the art of fast writing using shorthand. Plover is a libre software engine for stenography developed by the Open Steno Project. It provides a computer input method which is speedy (over 240 wpm), ergonomic, and flexible. Stenography has historically been used only by court reporters and captioners. Now, the Open Steno Project provides software and resources free of charge for anyone willing to learn.

georgi.png

Figure 1: Georgi: Steno For All by g Heavy Industries

Dedicated steno machines and any keyboards which allow simultaneous key presses can use Plover. The software works by converting a stroke of keys to a character, word, phrase, or command. Strokes, and the result they produce, are defined within a dictionary file1.

Emacs is a text editor/word processor used by programmers and authors, as well as researchers and hobbyists worldwide. Originally released in 1976, it is the flagship software of the GNU project. Like Plover, Emacs is community developed and allows you to run, change, and distribute it, more or less, however you want. It has been developed for more than 40 years and, although modest in appearance, boasts countless features and add-ons2.

emacs.png

Figure 2: Screen shot of the Emacs text editor.

Emacs works by binding every key to a programming command3. For example, pressing 'a' calls the self-insert-command which inserts the character typed, a. Commands can also be bound to key combinations. To change windows, press 'Control + x + o' (notated C-x o) to call the other-window command. Commands not bound to a key or key combination are accessed through an interactive process initiated with 'Alt+x' (notated M-x)4. To change windows using the interactive process, type M-x other-window.

This document defines a dictionary for using Plover with Emacs. Explanations of concepts and rationale are provided for each set of entries. Basic familiarity with Plover and Emacs is assumed. If you're not familiar with Plover and want to learn it, visit the Plover wiki. To get started with Emacs, check out the guided tour.

2. Dictionary design principles

Stenography works by mapping a set of steno keys to some output characters or actions. The mapping is often one-to-many. A steno theory unifies a set of mappings by providing a cohesive conceptual framework. Rules for a mapping are stored in a lookup table called a dictionary. It is the stenographer's dictionary which captures the essense of a theory. What follows are techniques to design dictionaries and formulate theories.

2.1. Phonetic and Shape Patterns

Mirabai Knight, founder of the Open Steno Project, points out in her Steno 101 series that stenography can be thought of as a phonetic-mnemonic system. Phonetics are the "ooh" and "aah" sounds that make up spoken language. A mnemonic strings these together in ways that naturally correspond to words or phrases. For example, TK represents a "duh" sound, AO an "Oh?" sound, and -R an "err". String these together and TKAO-R corresponds to "door" (the hyphen denotes which hand strokes the keys). Large swaths of human language are represented with phonetic patterns.

Another pattern is to define a stroke by the shape it makes on the keyboard. This is useful when phonetic patterns don't make sense or aren't practical. Because shape patterns are spatially oriented, associations can be made through transformations (e.g. rotation or translation) of the shape. The Cross Platform Movement dictionary by Ted Morin uses shape patterns. Page Up and Page Down are mapped to -RPG (-rpg.png) and -FBL (-fbl.png) because the patterns they make look like up and down arrows.

2.2. Mode prefixes

A pseudo "mode" can be defined by prefixing all related commands with the same pattern. There are two ways to do this. Either adjoin keys to a shape pattern (thus maintaining a single stroke) or define a multi-stroke command whose first stroke is the pattern.

Mark Kislingbury, record holder for fastest writer in the world, uses the single-stroke prefix approach when he advises to put small words on the left. For example, THA ("that") leaves the board open for phrases like "that was", "that will", "that had", etc. by adding a single key. THA acts as a "mode" for all phrases beginning with "that". Such prefixes are "built in" and require no additional stroke.

The Cross Platform Movement dictionary also demonstrates use of a single-stroke prefix. In that system, STPH- is the movement prefix. The -R key corresponds to the "A" key of WASD navigaton (which in turn corresponds to the left arrow key). Therefore, STPH-R means "move left".

2.3. Right hand rule

Steno order describes how the keys of a steno board are laid out, as well as how words should be spelled. Observe that all letters but "e" (E), "i" (EU), and "u" (U) appear before * in the steno order. This means it's possible to write nearly the entire English alphabet with only the left hand. In this way, the English alphabet "leans left".

STKPWHRAO*EUFRPBLGTSDZ

A major consequence of the English alphabet's tendency to lean left is:

Right Hand Rule: a single stroke for every letter in the English alphabet can be made by using a right hand pattern that excludes the E and U keys.

Left Hand Right Hand Letter
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"

3. Emacs: Escape, Meta, Alt, Control, Shift

Emacs makes extensive use of modifier keys. An old joke says that Emacs stands for "Escape, Meta, Alt, Control, Shift". This fact presents a steno-theoretical challenge:

How can modified letters (including combinations of modifiers) memorably coexist alongside established natural language steno definitions?

The solution is to define a mode prefix which obeys the right hand rule.

Clever shapes are used which act as a mode for each possible modifier combination. The shapes compose to define new shapes. Notice how the keys used for Control and Alt are the same keys used for Control + Alt. The keys in Control, Alt, and Shift are all in Control + Alt + Shift. And so on. The shapes can be mirrored to the other side of the board to yield more possible strokes.

L Pattern Left hand Modifier Right Hand R Pattern
kpw.png KPW Control -PBG -pbg.png
tpw.png TPW Alt -PBL -pbl.png
tkpw.png TKPW Control + Alt -PBLG -pblg.png
kpr.png KPR Shift -RPG -rpg.png
kpwr.png KPWR Control + Shift -RPBG -rpbg.png
tpwr.png TPWR Alt + Shift -RPBL -rpbl.png
tkpwr.png TKPWR Control + Alt + Shift -RPBLG -rpblg.png

The patterns don't (and can't) compose perfectly, however. If that were the case, Alt + Shift would look like Control + Alt + Shift and Control + Alt + Shift would need a different form. Exactly what that form would be is unclear. Instead, Alt + Shift has a "Z" or an "S" shape.

To understand why Alt + Shift has a "Z" or an "S" shape, consider each shape as constructed by different "bits". On the right-hand-side, the "Shift bit" is the lower left key (-R); on the left it's the lower right key (R). Similarly, the "Super bit" is top left (-F) or top right (H). And so on. Which bits are present determine the pattern.

super-shift-bits.png

Figure 3: Composition bits

Super isn't used often with Emacs. However, the principles still apply.

L Pattern Left hand Modifier Right Hand R Pattern
twh.png TWH Super -FBL -fbl.png
kpwh.png KPWH Control + Super -FPBG -fpbg.png
tpwh.png TPWH Alt + Super -FPBL -fpbl.png
pwhr.png PWHR Shift + Super -FRPB -frpb.png
tkpwh.png TKPWH Control + Alt + Super -FPBLG -fpblg.png
kpwhr.png KPWHR Control + Shift + Super -FRPBG -frpbg.png
tpwhr.png TPWHR Alt + Shift + Super -FRPBL -frpbl.png
tkpwhr.png TKPWHR Control + Alt + Shift + Super -FRPBLG -frpblg.png

This dictionary combines these patterns with the Right Hand Rule to provide comprehensive modifier coverage within the standard Plover theory. Detailed descriptions of each modifier combination appear below.

ATTENTION Only definitions for the right hand side are defined at this time as well as only for Control, Alt, and Shift combinations5.

3.1. Plover configuration

Set Plover `Configure > Output > Space Placement` to "Before Output".

Plover sends literal keystrokes, more or less, when a stroke is released6. This includes a space before or after the output sequence. If the Space Placement is set to "After Output", Emacs may not behave as expected depending on how the space is interpreted7.

3.2. Control

L Pattern Left hand Modifier Right Hand R Pattern
kpw.png KPW Control -PBG -pbg.png

The right-hand Control form, -PBG, looks like an "L". The last letter of "Control" is "L".

"KPW" : "{^}{#Control_L()}{^}",
"-PBG": "{^}{#Control_L()}{^}",

The main challenge with -PBG is that it contains the -G key, used for {^ing}. Default alternate forms are used to preserve a single-stroke for some words, as with "listening" and "Inc.". Other words incur a one-stroke penalty and require the use of /G to append "-ing".

original definition co-opted form alternate form
"listening" HR-PBG HR-FPBG
"Inc." EU-PBG AO*E-PBG
"defining" TK-PBG TK-PB/G
"financing" TP-PBG TP-PB/G
"gunning" TKPW-PBG TPKW-PB/G
"conditioning" K-PBG K-PB/G
"machining" PH-PBG PH-PB/G
"reasoning" R-PBG R-PB/G
"seasoning" S-PBG S-PB/G
"continuing" T-PBG T-PB/G
"examining" KP-PBG KP-PB/G
"TK-PBG"  : "{^}{#Control_L(d)}{^}",
"TP-PBG"  : "{^}{#Control_L(f)}{^}",
"TKPW-PBG": "{^}{#Control_L(g)}{^}",
"EUPBG"   : "{^}{#Control_L(i)}{^}",
"K-PBG"   : "{^}{#Control_L(k)}{^}",
"HR-PBG"  : "{^}{#Control_L(l)}{^}",
"PH-PBG"  : "{^}{#Control_L(m)}{^}",
"R-PBG"   : "{^}{#Control_L(r)}{^}",
"S-PBG"   : "{^}{#Control_L(s)}{^}",
"T-PBG"   : "{^}{#Control_L(t)}{^}",
"KP-PBG"  : "{^}{#Control_L(x)}{^}",

The default binding for "edge" (E-PBG) is completely clobbered. The alternate spelling (E-PBLG) is co-opted by Control + Alt and there is nothing similar nearby to use. Instead, E-GD is used for "edge", supplanting "egged" which recieves the new binding -EG/D. "Winning" uses a new single-stroke definition.

original definition old binding new binding
"edge" E-PBG -E-GD
"egged" E-GD -EG/D
"winning" W-PBG W*PB
"EPBG"  : "{^}{#Control_L(e)}{^}",
"-EGD"  : "edge",
"-EG/D" : "egged",
"W-PBG" : "{^}{#Control_L(w)}{^}",
"W*PB"  : "winning",

Several strokes are safely co-opted because they aren't words, are undefined, or aren't proper.

stroke silly default
A-PBG "Ang"
PW-PBG "beening"
KR-PBG "CNing"
H-PBG "ing"
SKWR-PBG (undefined)
TPH-PBG "undering"
O-PBG "-ing on"
P-PBG "opinioning"
KW-PBG (undefined)
SR-PBG "haven'ting"
KWR-PBG "I knowing"
STKPW-PBG (undefined)
U-PBG "you think"

The last stroke, UPBG for "you think", is a common enough brief. However, since that would map to control-e (end of the line), I'm willing to take a stroke penalty (or come up with a different brief for "you think"). A replacement for O-PBG ("-ing on") may be useful but is not provided.

"A-PBG"    : "{^}{#Control_L(a)}{^}",
"PW-PBG"   : "{^}{#Control_L(b)}{^}",
"KR-PBG"   : "{^}{#Control_L(c)}{^}",
"SKWR-PBG" : "{^}{#Control_L(j)}{^}",
"H-PBG"    : "{^}{#Control_L(h)}{^}",
"TPH-PBG"  : "{^}{#Control_L(n)}{^}",
"O-PBG"    : "{^}{#Control_L(o)}{^}",
"P-PBG"    : "{^}{#Control_L(p)}{^}",
"KW-PBG"   : "{^}{#Control_L(q)}{^}",
"UPBG"     : "{^}{#Control_L(u)}{^}",
"SR-PBG"   : "{^}{#Control_L(v)}{^}",
"KWR-PBG"  : "{^}{#Control_L(y)}{^}",
"STKPW-PBG": "{^}{#Control_L(z)}{^}",

3.3. Alt

L Pattern Left hand Modifier Right Hand R Pattern
tpw.png TPW Alt -PBL -pbl.png

The right-hand Alt form, -PBL, looks like a "T". The last letter of "Alt" is "T".

"TPW" : "{^}{#Alt_L()}{^}",
"-PBL": "{^}{#Alt_L()}{^}",

Alternate single-stroke forms exist and are used for "financial" and "only".

original definition co-opted form alternate form
"financial" F-PBL TP-PBGS
"only" O-PBL OE-PBL

New bindings for several words are created using *.

original definition old binding new binding
"Alan" A-PBL A*PBL
"{ential}" EPBL *EPBL
"conditional" K-PBL K*PBL
"reasonable" R-PBL R*PBL
"seasonal" S-PBL S*PBL
"continual" T-PBL T*PBL
"A-PBL": "{^}{#Alt_L(a)}{^}",
"A*PBL": "Alan",
"EPBL" : "{^}{#Alt_L(e)}{^}",
"*EPBL": "{^}{^ential}{^}",
"K-PBL": "{^}{#Alt_L(k)}{^}",
"K*PBL": "conditional",
"R-PBL": "{^}{#Alt_L(r)}{^}",
"R*PBL": "reasonable",
"S-PBL": "{^}{#Alt_L(s)}{^}",
"S*PBL": "seasonal",
"T-PBL": "{^}{#Alt_L(t)}{^}",
"T*PBL": "continual",

The remaining bindings present no conflicts.

"PW-PBL"   : "{^}{#Alt_L(b)}{^}",
"KR-PBL"   : "{^}{#Alt_L(c)}{^}",
"TK-PBL"   : "{^}{#Alt_L(d)}{^}",
"TP-PBL"   : "{^}{#Alt_L(f)}{^}",
"TKPW-PBL" : "{^}{#Alt_L(g)}{^}",
"H-PBL"    : "{^}{#Alt_L(h)}{^}",
"EUPBL"    : "{^}{#Alt_L(i)}{^}",
"SKWR-PBL" : "{^}{#Alt_L(j)}{^}",
"HR-PBL"   : "{^}{#Alt_L(l)}{^}",
"PH-PBL"   : "{^}{#Alt_L(m)}{^}",
"TPH-PBL"  : "{^}{#Alt_L(n)}{^}",
"O-PBL"    : "{^}{#Alt_L(o)}{^}",
"P-PBL"    : "{^}{#Alt_L(p)}{^}",
"KW-PBL"   : "{^}{#Alt_L(q)}{^}",
"UPBL"     : "{^}{#Alt_L(u)}{^}",
"SR-PBL"   : "{^}{#Alt_L(v)}{^}",
"W-PBL"    : "{^}{#Alt_L(w)}{^}",
"KP-PBL"   : "{^}{#Alt_L(x)}{^}",
"KWR-PBL"  : "{^}{#Alt_L(y)}{^}",
"STKPW-PBL": "{^}{#Alt_L(z)}{^}",

3.4. Control + Alt

L Pattern Left hand Modifier Right Hand R Pattern
kpw.png KPW Control -PBG -pbg.png
tpw.png TPW Alt -PBL -pbl.png
tkpw.png TKPW Control + Alt -PBLG -pblg.png

The Control + Alt form is a combination of the Control and Alt forms. Notice how the "Control bit" and "Alt bit" are both present.

"TKPW" : "{^}{#Control_L(Alt_L())}{^}",
"-PBLG": "{^}{#Control_L(Alt_L())}{^}",

The right hand form -PBLG is the "j" sound within Plover theory. This causes a clash with several default words. A * is given to each default form to provide new bindings.

original definition old binding new binding
"{\age}" A-PBLG A*EUPBLG
"bandage" PW-PBLG PW*PBLG
"CJ" KR-PBLG KR*PBLG
"edge" EPBLG See Control
"image" EUPBLG *EUPBLG
"emergency" PH-PBLG PH*PBLG
"engine" TPH-PBLG TPH*PBLG
"A-PBLG"  : "{^}{#Control_L(Alt_L(a))}{^}",
"A*EUPBLG": "{^age}",
"PW-PBLG" : "{^}{#Control_L(Alt_L(b))}{^}",
"PW*PBLG" : "bandage",
"KR-PBLG" : "{^}{#Control_L(Alt_L(c))}{^}",
"KR*PBLG" : "CJ",
"EPBLG"   : "{^}{#Control_L(Alt_L(e))}{^}",
"EUPBLG"  : "{^}{#Control_L(Alt_L(i))}{^}",
"*EUPBLG" : "image",
"PH-PBLG" : "{^}{#Control_L(Alt_L(m))}{^}",
"PH*PBLG" : "emergency",
"TPH-PBLG": "{^}{#Control_L(Alt_L(n))}{^}",
"TPH*PBLG": "engine",

Several silly words present in the default dictionary are overwritten without replacement.

stroke silly default
A*EUPBLG anal{\ing}
F-PBLG "financialing"
K-PBLG "conditionaling"
O-PBLG "onlying"
R-PBLG "reasonabling"
S-PBLG "seasonaling"
T-PBLG "continualing"
"TK-PBLG"   : "{^}{#Control_L(Alt_L(d))}{^}",
"TP-PBLG"   : "{^}{#Control_L(Alt_L(f))}{^}",
"TKPW-PBLG" : "{^}{#Control_L(Alt_L(g))}{^}",
"H-PBLG"    : "{^}{#Control_L(Alt_L(h))}{^}",
"SKWR-PBLG" : "{^}{#Control_L(Alt_L(j))}{^}",
"K-PBLG"    : "{^}{#Control_L(Alt_L(k))}{^}",
"O-PBLG"    : "{^}{#Control_L(Alt_L(o))}{^}",
"P-PBLG"    : "{^}{#Control_L(Alt_L(p))}{^}",
"KW-PBLG"   : "{^}{#Control_L(Alt_L(q))}{^}",
"R-PBLG"    : "{^}{#Control_L(Alt_L(r))}{^}",
"S-PBLG"    : "{^}{#Control_L(Alt_L(s))}{^}",
"T-PBLG"    : "{^}{#Control_L(Alt_L(t))}{^}",
"UPBLG"     : "{^}{#Control_L(Alt_L(u))}{^}",
"SR-PBLG"   : "{^}{#Control_L(Alt_L(v))}{^}",
"W-PBLG"    : "{^}{#Control_L(Alt_L(w))}{^}",
"KP-PBLG"   : "{^}{#Control_L(Alt_L(x))}{^}",
"KWR-PBLG"  : "{^}{#Control_L(Alt_L(y))}{^}",
"STKPW-PBLG": "{^}{#Control_L(Alt_L(z))}{^}",

3.5. Shift

L Pattern Left hand Modifier Right Hand R Pattern
kpr.png KPR Shift -RPG -rpg.png

The Shift form looks like an up-arrow.

"KPR" : "{^}{#Shift_L()}{^}",
"-RPG": "{^}{#Shift_L()}{^}",

There is an {^ing} clash as with the other forms containing -G. Use the default alternate form.

original definition co-opted form alternate form
"reporting" O-RPG RO-RPG
"O-RPG": "{^}{#Shift_L(o)}{^}",

The remaining letters correspond to silly words in the default dictionary or are undefined. The remaining strokes present no conflict.

stroke silly default
A-RPG "arping"
ERPG "he wering"
EURPG "i wering"
T-RPG "it wering"
URPG "you wering"
"A-RPG"    : "{^}{#Shift_L(a)}{^}",
"PW-RPG"   : "{^}{#Shift_L(b)}{^}",
"KR-RPG"   : "{^}{#Shift_L(c)}{^}",
"TK-RPG"   : "{^}{#Shift_L(d)}{^}",
"ERPG"     : "{^}{#Shift_L(e)}{^}",
"TP-RPG"   : "{^}{#Shift_L(f)}{^}",
"TKPW-RPG" : "{^}{#Shift_L(g)}{^}",
"H-RPG"    : "{^}{#Shift_L(h)}{^}",
"EURPG"    : "{^}{#Shift_L(i)}{^}",
"SKWR-RPG" : "{^}{#Shift_L(j)}{^}",
"K-RPG"    : "{^}{#Shift_L(k)}{^}",
"HR-RPG"   : "{^}{#Shift_L(l)}{^}",
"PH-RPG"   : "{^}{#Shift_L(m)}{^}",
"TPH-RPG"  : "{^}{#Shift_L(n)}{^}",
"P-RPG"    : "{^}{#Shift_L(p)}{^}",
"KW-RPG"   : "{^}{#Shift_L(q)}{^}",
"R-RPG"    : "{^}{#Shift_L(r)}{^}",
"S-RPG"    : "{^}{#Shift_L(s)}{^}",
"T-RPG"    : "{^}{#Shift_L(t)}{^}",
"URPG"     : "{^}{#Shift_L(u)}{^}",
"SR-RPG"   : "{^}{#Shift_L(v)}{^}",
"W-RPG"    : "{^}{#Shift_L(w)}{^}",
"KP-RPG"   : "{^}{#Shift_L(x)}{^}",
"KWR-RPG"  : "{^}{#Shift_L(y)}{^}",
"STKPW-RPG": "{^}{#Shift_L(z)}{^}",

3.6. Control + Shift

L Pattern Left hand Modifier Right Hand R Pattern
kpw.png KPW Control -PBG -pbg.png
kpr.png KPR Shift -RPG -rpg.png
kpwr.png KPWR Control + Shift -RPBG -rpbg.png

The Control + Shift from is a combination of the Control and Shift forms. Notice how the "Control bit" and "Shift bits" compose the overall form.

"KPWR" : "{^}{#Control_L(Shift_L())}{^}",
"-RPBG": "{^}{#Control_L(Shift_L())}{^}",

The following words require use of their alternate form.

original definition co-opted form alternate form
"anger" A-RPBG A*RPBG
"increment" EURPBG EURPBLT
"concerning" K-RPBG KERPBG
"orange" O-RPBG O/RAPBG
"surgeon general" S-RPBG S*RPBG
"A-RPBG": "{^}{#Control_L(Shift_L(a))}{^}",
"EURPBG": "{^}{#Control_L(Shift_L(i))}{^}",
"K-RPBG": "{^}{#Control_L(Shift_L(k))}{^}",
"O-RPBG": "{^}{#Control_L(Shift_L(o))}{^}",
"S-RPBG": "{^}{#Control_L(Shift_L(s))}{^}",

One word, "earning", requires rebinding. Star (*) is used to define the new stroke.

original definition old binding new binding
"earning" ERPBG *ERPBG
"ERPBG": "{^}{#Control_L(Shift_L(e))}{^}",
"*ERPBG": "earning",

The remaining strokes either present no conflict or replace something silly.

stroke silly default
TP-RPBG "fortuning"
H-RPBG "hit-and-running"
PH-PRBG "miranda warning"8
U-RPBG "urning"
"PW-RPBG"   : "{^}{#Control_L(Shift_L(b))}{^}",
"KR-RPBG"   : "{^}{#Control_L(Shift_L(c))}{^}",
"TK-RPBG"   : "{^}{#Control_L(Shift_L(d))}{^}",
"TP-RPBG"   : "{^}{#Control_L(Shift_L(f))}{^}",
"TKPW-RPBG" : "{^}{#Control_L(Shift_L(g))}{^}",
"H-RPBG"    : "{^}{#Control_L(Shift_L(h))}{^}",
"SKWR-RPBG" : "{^}{#Control_L(Shift_L(j))}{^}",
"HR-RPBG"   : "{^}{#Control_L(Shift_L(l))}{^}",
"PH-RPBG"   : "{^}{#Control_L(Shift_L(m))}{^}",
"TPH-RPBG"  : "{^}{#Control_L(Shift_L(n))}{^}",
"P-RPBG"    : "{^}{#Control_L(Shift_L(p))}{^}",
"KW-RPBG"   : "{^}{#Control_L(Shift_L(q))}{^}",
"R-RPBG"    : "{^}{#Control_L(Shift_L(r))}{^}",
"T-RPBG"    : "{^}{#Control_L(Shift_L(t))}{^}",
"URPBG"     : "{^}{#Control_L(Shift_L(u))}{^}",
"SR-RPBG"   : "{^}{#Control_L(Shift_L(v))}{^}",
"W-RPBG"    : "{^}{#Control_L(Shift_L(w))}{^}",
"KP-RPBG"   : "{^}{#Control_L(Shift_L(x))}{^}",
"KWR-RPBG"  : "{^}{#Control_L(Shift_L(y))}{^}",
"STKPW-RPBG": "{^}{#Control_L(Shift_L(z))}{^}",

3.7. Alt + Shift

L Pattern Left hand Modifier Right Hand R Pattern
tpw.png TPW Alt -PBL -pbl.png
kpr.png KPR Shift -RPG -rpg.png
tpwr.png TPWR Alt + Shift -RPBL -rpbl.png

The Alt + Shift form is a combination of the Alt and Shift forms. Notice how the "Alt bit" and "Shift bit" compose the overall form.

"TPWR"  : "{^}{#Alt_L(Shift_L())}{^}",
"-RPBL" : "{^}{#Alt_L(Shift_L())}{^}",

Not many conflicts occur with the Alt + Shift pattern and each conflict has a viable alternative form already defined.

original definition co-opted form alternate form
"fortunately" TP-RPBL TP-RPBLT
"alternatively" HR-RPBL HR-RPBLT
"original" O-RPBL O-RPBLG
"TP-RPBL" : "{^}{#Alt_L(Shift_L(f))}{^}",
"HR-RPBL" : "{^}{#Alt_L(Shift_L(l))}{^}",
"O-RPBL"  : "{^}{#Alt_L(Shift_L(o))}{^}",

There are no other conflicts with the Plover standard dictionary.

"A-RPBL"     : "{^}{#Alt_L(Shift_L(a))}{^}",
"PW-RPBL"    : "{^}{#Alt_L(Shift_L(b))}{^}",
"KR-RPBL"    : "{^}{#Alt_L(Shift_L(c))}{^}",
"TK-RPBL"    : "{^}{#Alt_L(Shift_L(d))}{^}",
"ERPBL"      : "{^}{#Alt_L(Shift_L(e))}{^}",
"TKPW-RPBL"  : "{^}{#Alt_L(Shift_L(g))}{^}",
"H-RPBL"     : "{^}{#Alt_L(Shift_L(h))}{^}",
"EURPBL"     : "{^}{#Alt_L(Shift_L(i))}{^}",
"SKWR-RPBL"  : "{^}{#Alt_L(Shift_L(j))}{^}",
"K-RPBL"     : "{^}{#Alt_L(Shift_L(k))}{^}",
"PH-RPBL"    : "{^}{#Alt_L(Shift_L(m))}{^}",
"TPH-RPBL"   : "{^}{#Alt_L(Shift_L(n))}{^}",
"P-RPBL"     : "{^}{#Alt_L(Shift_L(p))}{^}",
"KW-RPBL"    : "{^}{#Alt_L(Shift_L(q))}{^}",
"R-RPBL"     : "{^}{#Alt_L(Shift_L(r))}{^}",
"S-RPBL"     : "{^}{#Alt_L(Shift_L(s))}{^}",
"T-RPBL"     : "{^}{#Alt_L(Shift_L(t))}{^}",
"URPBL"      : "{^}{#Alt_L(Shift_L(u))}{^}",
"SR-RPBL"    : "{^}{#Alt_L(Shift_L(v))}{^}",
"W-RPBL"     : "{^}{#Alt_L(Shift_L(w))}{^}",
"KP-RPBL"    : "{^}{#Alt_L(Shift_L(x))}{^}",
"KWR-RPBL"   : "{^}{#Alt_L(Shift_L(y))}{^}",
"STKPW-RPBL" : "{^}{#Alt_L(Shift_L(z))}{^}",

3.8. Control + Alt + Shift

L Pattern Left hand Modifier Right Hand R Pattern
kpw.png KPW Control -PBG -pbg.png
tpw.png TPW Alt -PBL -pbl.png
kpr.png KPR Shift -RPG -rpg.png
tkpwr.png TKPWR Control + Alt + Shift -RPBLG -rpblg.png

The Control + Alt + Shift form is a combination of the Control, Alt and Shift forms.

"TKPWR"  : "{^}{#Control_L(Alt_L(Shift_L()))}{^}",
"-RPBLG"  : "{^}{#Control_L(Alt_L(Shift_L()))}{^}",

Several forms are co-opted. The alternate forms, some of which require an additional stroke, are fortunately easy to remember.

original definition co-opted form alternate form
"arrange" A-RPBLG A/RA-EUPBG
"energy" TPH-RPBLG TPH-RG
"imgur" EURPBLG EUPL/TKPW-UR
"original" O-RPBLG O-ERPBLG
"perjury" P-RPBLG PR-PBLG
"surgery" S-RPBLG S*URPBLG
"A-RPBLG"      : "{^}{#Control_L(Alt_L(Shift_L(a)))}{^}",
"A/RA-EUPBG"   : "arrange",
"ERPBLG"       : "{^}{#Control_L(Alt_L(Shift_L(e)))}{^}",
"TPH-RG"       : "energy",
"EURPBLG"      : "{^}{#Control_L(Alt_L(Shift_L(i)))}{^}",
"EUPL/TKPW-UR" : "imgur",
"O-RPBLG"      : "{^}{#Control_L(Alt_L(Shift_L(o)))}{^}",
"O-ERPBLG"     : "original",
"P-RPBLG"      : "{^}{#Control_L(Alt_L(Shift_L(p)))}{^}",
"PR-PBLG"      : "perjury",
"S-RPBLG"      : "{^}{#Control_L(Alt_L(Shift_L(s)))}{^}",
"S*URPBLG"     : "surgery",

A few words require new bindings. The word "emergency" is defined in Control + Alt. Otherwise, star (*) is used for new strokes.

original definition old binding new binding
"early morning" ERPBLG *ERPBLG
"emergency" PH-RPBLG PH*PBLG from Control + Alt
"urge" URPBLG *URPBLG
"*ERPBLG"  : "{^}{#Control_L(Alt_L(Shift_L(e)))}{^}",
"*URPBLG"  : "{^}{#Control_L(Alt_L(Shift_L(u)))}{^}",

There are a handful of silly strokes which are overwritten.

stroke silly default
F-RPBLG "fortunatelying"
HR-RPBLG "alternativelying"
"PW-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(b)))}{^}",
"KR-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(c)))}{^}",
"TK-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(d)))}{^}",
"TP-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(f)))}{^}",
"TKPW-RPBLG"  : "{^}{#Control_L(Alt_L(Shift_L(g)))}{^}",
"H-RPBLG"     : "{^}{#Control_L(Alt_L(Shift_L(h)))}{^}",
"SKWR-RPBLG"  : "{^}{#Control_L(Alt_L(Shift_L(j)))}{^}",
"K-RPBLG"     : "{^}{#Control_L(Alt_L(Shift_L(k)))}{^}",
"HR-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(l)))}{^}",
"PH-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(m)))}{^}",
"TPH-RPBLG"   : "{^}{#Control_L(Alt_L(Shift_L(n)))}{^}",
"KW-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(q)))}{^}",
"R-RPBLG"     : "{^}{#Control_L(Alt_L(Shift_L(r)))}{^}",
"T-RPBLG"     : "{^}{#Control_L(Alt_L(Shift_L(t)))}{^}",
"URPBLG"      : "{^}{#Control_L(Alt_L(Shift_L(u)))}{^}",
"SR-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(v)))}{^}",
"W-RPBLG"     : "{^}{#Control_L(Alt_L(Shift_L(w)))}{^}",
"KP-RPBLG"    : "{^}{#Control_L(Alt_L(Shift_L(x)))}{^}",
"KWR-RPBLG"   : "{^}{#Control_L(Alt_L(Shift_L(y)))}{^}",
"STKPW-RPBLG" : "{^}{#Control_L(Alt_L(Shift_L(z)))}{^}",

3.9. Escape

The Escape key is distributed with Plover in the commands.json dictionary as TPEFBG. This is a two hand form and, given the command's importance, might benefit from a one-handed binding.

In Emacs, Escape also functions as Meta when in the terminal. Given the Escape/Meta/Alt relationship, one possibility is to translate the Alt pattern over by one key (tpw.png or -pbl.png). This overwrites the word "and". However, there are ample alternate forms available for "and".

original definition co-opted form alternate form
"and" STK SP, A-ND
"STK" : "{^}{#Escape}{^}",
"-LGT": "{^}{#Escape}{^}",

4. Function keys

The function keys don't appear in the default dictionaries. Since * is not used at all with numbers, star is used here to differentiate the function keys.

"1*": "{^}{#F1}{^}",
"2*": "{^}{#F2}{^}",
"3*": "{^}{#F3}{^}",
"4*": "{^}{#F4}{^}",
"5*": "{^}{#F5}{^}",
"*6": "{^}{#F6}{^}",
"*7": "{^}{#F7}{^}",
"*8": "{^}{#F8}{^}",
"*9": "{^}{#F9}{^}",
"10*": "{^}{#F10}{^}",
"1*D": "{^}{#F11}{^}",
"2*D": "{^}{#F12}{^}",

5. Resources

The following resources were used in the design of this dictionary. They are included here in complete form for posterity.

5.1. Cross Platform Movement

By Ted Morin, the Cross Platform Movement dictionary provides a navigation scheme that works across operating systems. The dictionary demonstrates a left-handed mode prefix.

Ted explains the how the dictionary works:

Movement

Like the Plover default dictionary, you activate movement keys by using STPH- and then select the movement key with the right hand, as below.

Use -R, -P, -B, and -G for left, up, down, and right.

In addition, page up and down are arrows made with the right hand: Page Up is -RPG (up arrow). Page Down is -FBL (down arrow).

Home is -FPL (all three fingers up), End is -RBG (all three fingers down.)

Finally, -RB is Control(Left), -BG is Control(Right). These jump words left and right on Windows and Linux. For Mac, add an asterisk, and *RB will make Option(Left), and *BG will make Option(Right). Selection

To add Shift to any of the above (which will select text that you move over), use SKWR- instead of STPH-.

Utility

Included for convenient is a set of arrow keys with the Super key (Windows/Meta/Command depending on OS). On Windows, this will snap windows to the sides of screens, maximize, and minimize them. On Mac, you can jump to the beginning or end of lines or files. On Linux, the behavior varies. To use this, it’s simply KPH* (command) and the four arrows. Deletion

Finally, I have a delete-word stroke for when Plover runs out of buffer. Simply #* on Windows & Linux; I tend to use right index finger for the asterisk, and the middle right finger for the number bar. On Mac, I just use *F or *6 if I accidentally hit the number bar.

The dictionary is given below:

{
"#*": "{#Control_L(BackSpace)}",
"*6": "{#Alt_L(BackSpace)}",
"*F": "{#Alt_L(BackSpace)}",
"KPH*B": "{#Super_L(Down)}",
"KPH*G": "{#Super_L(Right)}",
"KPH*P": "{#Super_L(Up)}",
"KPH*R": "{#Super_L(Left)}",
"SKWR*BG": "{#Alt_L(Shift_L(Right))}",
"SKWR*RB": "{#Alt_L(Shift_L(Left))}",
"SKWR-B": "{#Shift_L(Down)}",
"SKWR-BG": "{#Control_L(Shift_L(Right))}",
"SKWR-FBL": "{#Shift_L(Page_Down)}",
"SKWR-FPL": "{#Shift_L(Home)}",
"SKWR-G": "{#Shift_L(Right)}",
"SKWR-P": "{#Shift_L(Up)}",
"SKWR-R": "{#Shift_L(Left)}",
"SKWR-RB": "{#Control_L(Shift_L(Left))}",
"SKWR-RBG": "{#Shift_L(End)}",
"SKWR-RPG": "{#Shift_L(Page_Up)}",
"STPH*BG": "{#Alt_L(Right)}",
"STPH*RB": "{#Alt_L(Left)}",
"STPH-B": "{#Down}",
"STPH-BG": "{#Control_L(Right)}",
"STPH-FBL": "{#Page_Down}",
"STPH-FP": "{#Control_L(Super_L(Left))}",
"STPH-FPL": "{#Home}",
"STPH-G": "{#Right}",
"STPH-P": "{#Up}",
"STPH-R": "{#Left}",
"STPH-RB": "{#Control_L(Left)}",
"STPH-RBG": "{#End}",
"STPH-RPG": "{#Page_Up}"
}

5.2. Modifiers Single Stroke

From DiDoesDigital, the modifiers-single-stroke dictionary demonstrates the Right Hand Rule.

  • *RPLT as Super
  • *RBLT as Super+Alt
  • *RPBLT as Super+Shift
  • *RBL as Control
{
"A*RPLT": "{#Super_L(a)}",
"PW*RPLT": "{#Super_L(b)}",
"KR*RPLT": "{#Super_L(c)}",
"TK*RPLT": "{#Super_L(d)}",
"*ERPLT": "{#Super_L(e)}",
"TP*RPLT": "{#Super_L(f)}",
"TKPW*RPLT": "{#Super_L(g)}",
"H*RPLT": "{#Super_L(h)}",
"*EURPLT": "{#Super_L(i)}",
"SKWR*RPLT": "{#Super_L(j)}",
"K*RPLT": "{#Super_L(k)}",
"HR*RPLT": "{#Super_L(l)}",
"PH*RPLT": "{#Super_L(m)}",
"TPH*RPLT": "{#Super_L(n)}",
"O*RPLT": "{#Super_L(o)}",
"P*RPLT": "{#Super_L(p)}",
"KW*RPLT": "{#Super_L(q)}",
"R*RPLT": "{#Super_L(r)}",
"S*RPLT": "{#Super_L(s)}",
"T*RPLT": "{#Super_L(t)}",
"*URPLT": "{#Super_L(u)}",
"SR*RPLT": "{#Super_L(v)}",
"W*RPLT": "{#Super_L(w)}",
"KP*RPLT": "{#Super_L(x)}",
"KWR*RPLT": "{#Super_L(y)}",
"STKPW*RPLT": "{#Super_L(z)}",
"A*RBLT": "{#Super_L(Alt_L(a))}",
"PW*RBLT": "{#Super_L(Alt_L(b))}",
"KR*RBLT": "{#Super_L(Alt_L(c))}",
"TK*RBLT": "{#Super_L(Alt_L(d))}",
"*ERBLT": "{#Super_L(Alt_L(e))}",
"TP*RBLT": "{#Super_L(Alt_L(f))}",
"TKPW*RBLT": "{#Super_L(Alt_L(g))}",
"H*RBLT": "{#Super_L(Alt_L(h))}",
"*EURBLT": "{#Super_L(Alt_L(i))}",
"SKWR*RBLT": "{#Super_L(Alt_L(j))}",
"K*RBLT": "{#Super_L(Alt_L(k))}",
"HR*RBLT": "{#Super_L(Alt_L(l))}",
"PH*RBLT": "{#Super_L(Alt_L(m))}",
"TPH*RBLT": "{#Super_L(Alt_L(n))}",
"O*RBLT": "{#Super_L(Alt_L(o))}",
"P*RBLT": "{#Super_L(Alt_L(p))}",
"KW*RBLT": "{#Super_L(Alt_L(q))}",
"R*RBLT": "{#Super_L(Alt_L(r))}",
"S*RBLT": "{#Super_L(Alt_L(s))}",
"T*RBLT": "{#Super_L(Alt_L(t))}",
"*URBLT": "{#Super_L(Alt_L(u))}",
"SR*RBLT": "{#Super_L(Alt_L(v))}",
"W*RBLT": "{#Super_L(Alt_L(w))}",
"KP*RBLT": "{#Super_L(Alt_L(x))}",
"KWR*RBLT": "{#Super_L(Alt_L(y))}",
"STKPW*RBLT": "{#Super_L(Alt_L(z))}",
"A*RPBLT": "{#Super_L(Shift_L(a))}",
"PW*RPBLT": "{#Super_L(Shift_L(b))}",
"KR*RPBLT": "{#Super_L(Shift_L(c))}",
"TK*RPBLT": "{#Super_L(Shift_L(d))}",
"*ERPBLT": "{#Super_L(Shift_L(e))}",
"TP*RPBLT": "{#Super_L(Shift_L(f))}",
"TKPW*RPBLT": "{#Super_L(Shift_L(g))}",
"H*RPBLT": "{#Super_L(Shift_L(h))}",
"*EURPBLT": "{#Super_L(Shift_L(i))}",
"SKWR*RPBLT": "{#Super_L(Shift_L(j))}",
"K*RPBLT": "{#Super_L(Shift_L(k))}",
"HR*RPBLT": "{#Super_L(Shift_L(l))}",
"PH*RPBLT": "{#Super_L(Shift_L(m))}",
"TPH*RPBLT": "{#Super_L(Shift_L(n))}",
"O*RPBLT": "{#Super_L(Shift_L(o))}",
"P*RPBLT": "{#Super_L(Shift_L(p))}",
"KW*RPBLT": "{#Super_L(Shift_L(q))}",
"R*RPBLT": "{#Super_L(Shift_L(r))}",
"S*RPBLT": "{#Super_L(Shift_L(s))}",
"T*RPBLT": "{#Super_L(Shift_L(t))}",
"*URPBLT": "{#Super_L(Shift_L(u))}",
"SR*RPBLT": "{#Super_L(Shift_L(v))}",
"W*RPBLT": "{#Super_L(Shift_L(w))}",
"KP*RPBLT": "{#Super_L(Shift_L(x))}",
"KWR*RPBLT": "{#Super_L(Shift_L(y))}",
"STKPW*RPBLT": "{#Super_L(Shift_L(z))}",
"1-RG": "{#Control_L(F1)}",
"2-RG": "{#Control_L(F2)}",
"3-RG": "{#Control_L(F3)}",
"4-RG": "{#Control_L(F4)}",
"5-RG": "{#Control_L(F5)}",
"KR-6": "{#Control_L(F6)}",
"KR-7": "{#Control_L(F7)}",
"KR-8": "{#Control_L(F8)}",
"KR-9": "{#Control_L(F9)}",
"10-RG": "{#Control_L(F10)}",
"11-RG": "{#Control_L(F11)}",
"12-RG": "{#Control_L(F12)}",
"A*RBL": "{#Control_L(a)}",
"PW*RBL": "{#Control_L(b)}",
"KR*RBL": "{#Control_L(c)}",
"TK*RBL": "{#Control_L(d)}",
"*ERBL": "{#Control_L(e)}",
"TP*RBL": "{#Control_L(f)}",
"TKPW*RBL": "{#Control_L(g)}",
"H*RBL": "{#Control_L(h)}",
"*EURBL": "{#Control_L(i)}",
"SKWR*RBL": "{#Control_L(j)}",
"K*RBL": "{#Control_L(k)}",
"HR*RBL": "{#Control_L(l)}",
"PH*RBL": "{#Control_L(m)}",
"TPH*RBL": "{#Control_L(n)}",
"O*RBL": "{#Control_L(o)}",
"P*RBL": "{#Control_L(p)}",
"KW*RBL": "{#Control_L(q)}",
"R*RBL": "{#Control_L(r)}",
"S*RBL": "{#Control_L(s)}",
"T*RBL": "{#Control_L(t)}",
"*URBL": "{#Control_L(u)}",
"SR*RBL": "{#Control_L(v)}",
"W*RBL": "{#Control_L(w)}",
"KP*RBL": "{#Control_L(x)}",
"KWR*RBL": "{#Control_L(y)}",
"STKPW*RBL": "{#Control_L(z)}",
"WUZ/WUZ": "{#}"
}

5.3. Nimble single strokes

Joshua Grams has defined the nimble-single-strokes dictionary. It too utilizes the Right Hand Rule.

  • -FLGT for Alt
  • -BLGT for Control
  • -RLGT for Shift
  • -PLGT for Super
  • -PBLGT for Super+Control
  • -FPLGT for Super+Alt
  • -RPLGT for Super+Shift
  • -FBLGT for Control+Alt
  • -RBLGT for Control+Shift
  • -FRLGT for Alt+Shift
  • -FPBLGT for Super+Control+Alt
  • -FRPLGT for Super+Alt+Shift
  • -FRBLGT for Control+Alt+Shift
  • -FRPBLGT for Super+Control+Alt+Shift
{
        "1-8G9": "{#F1}",
        "2-8G9": "{#F2}",
        "3-8G9": "{#F3}",
        "4-8G9": "{#F4}",
        "12-8G9": "{#F5}",
        "23-8G9": "{#F6}",
        "34-8G9": "{#F7}",
        "123-8G9": "{#F8}",
        "234-8G9": "{#F9}",
        "14-8G9": "{#F10}",
        "13-8G9": "{#F11}",
        "24-8G9": "{#F12}",
        "STK-P": "{#up}",
        "STK-R": "{#left}",
        "STK-B": "{#down}",
        "STK-G": "{#right}",
        "STK-RPG": "{#page_up}",
        "STK-FBL": "{#page_down}",
        "STK-FPL": "{#home}",
        "STK-RBG": "{#end}",
        "STK-RB": "{#return}",
        "STK-F": "{#backspace}",
        "STK-L": "{#delete}",
        "STK-FR": "{#escape}",
        "STK-LG": "{#tab}",
        "STK-RP": "{#slash}",
        "STK-PG": "{#backslash}",
        "STKP": "{#Super_L()}",
        "APLGT": "{#Super_L(a)}",
        "PW-PLGT": "{#Super_L(b)}",
        "KR-PLGT": "{#Super_L(c)}",
        "TK-PLGT": "{#Super_L(d)}",
        "EPLGT": "{#Super_L(e)}",
        "TP-PLGT": "{#Super_L(f)}",
        "TKPW-PLGT": "{#Super_L(g)}",
        "H-PLGT": "{#Super_L(h)}",
        "EUPLGT": "{#Super_L(i)}",
        "SKWR-PLGT": "{#Super_L(j)}",
        "K-PLGT": "{#Super_L(k)}",
        "HR-PLGT": "{#Super_L(l)}",
        "PH-PLGT": "{#Super_L(m)}",
        "TPH-PLGT": "{#Super_L(n)}",
        "OPLGT": "{#Super_L(o)}",
        "P-PLGT": "{#Super_L(p)}",
        "KW-PLGT": "{#Super_L(q)}",
        "R-PLGT": "{#Super_L(r)}",
        "S-PLGT": "{#Super_L(s)}",
        "T-PLGT": "{#Super_L(t)}",
        "UPLGT": "{#Super_L(u)}",
        "SR-PLGT": "{#Super_L(v)}",
        "W-PLGT": "{#Super_L(w)}",
        "KP-PLGT": "{#Super_L(x)}",
        "KWR-PLGT": "{#Super_L(y)}",
        "STKPW-PLGT": "{#Super_L(z)}",
        "1-78G9": "{#Super_L(F1)}",
        "2-78G9": "{#Super_L(F2)}",
        "3-78G9": "{#Super_L(F3)}",
        "4-78G9": "{#Super_L(F4)}",
        "12-78G9": "{#Super_L(F5)}",
        "23-78G9": "{#Super_L(F6)}",
        "34-78G9": "{#Super_L(F7)}",
        "123-78G9": "{#Super_L(F8)}",
        "234-78G9": "{#Super_L(F9)}",
        "14-78G9": "{#Super_L(F10)}",
        "13-78G9": "{#Super_L(F11)}",
        "24-78G9": "{#Super_L(F12)}",
        "STKP-P": "{#Super_L(up)}",
        "STKP-R": "{#Super_L(left)}",
        "STKP-B": "{#Super_L(down)}",
        "STKP-G": "{#Super_L(right)}",
        "STKP-RPG": "{#Super_L(page_up)}",
        "STKP-FBL": "{#Super_L(page_down)}",
        "STKP-FPL": "{#Super_L(home)}",
        "STKP-RBG": "{#Super_L(end)}",
        "STKP-RB": "{#Super_L(return)}",
        "STKP-F": "{#Super_L(backspace)}",
        "STKP-L": "{#Super_L(delete)}",
        "STKP-FR": "{#Super_L(escape)}",
        "STKP-LG": "{#Super_L(tab)}",
        "STKP-RP": "{#Super_L(slash)}",
        "STKP-PG": "{#Super_L(backslash)}",
        "STKW": "{#Control_L()}",
        "ABLGT": "{#Control_L(a)}",
        "PW-BLGT": "{#Control_L(b)}",
        "KR-BLGT": "{#Control_L(c)}",
        "TK-BLGT": "{#Control_L(d)}",
        "EBLGT": "{#Control_L(e)}",
        "TP-BLGT": "{#Control_L(f)}",
        "TKPW-BLGT": "{#Control_L(g)}",
        "H-BLGT": "{#Control_L(h)}",
        "EUBLGT": "{#Control_L(i)}",
        "SKWR-BLGT": "{#Control_L(j)}",
        "K-BLGT": "{#Control_L(k)}",
        "HR-BLGT": "{#Control_L(l)}",
        "PH-BLGT": "{#Control_L(m)}",
        "TPH-BLGT": "{#Control_L(n)}",
        "OBLGT": "{#Control_L(o)}",
        "P-BLGT": "{#Control_L(p)}",
        "KW-BLGT": "{#Control_L(q)}",
        "R-BLGT": "{#Control_L(r)}",
        "S-BLGT": "{#Control_L(s)}",
        "T-BLGT": "{#Control_L(t)}",
        "UBLGT": "{#Control_L(u)}",
        "SR-BLGT": "{#Control_L(v)}",
        "W-BLGT": "{#Control_L(w)}",
        "KP-BLGT": "{#Control_L(x)}",
        "KWR-BLGT": "{#Control_L(y)}",
        "STKPW-BLGT": "{#Control_L(z)}",
        "1-B8G9": "{#Control_L(F1)}",
        "2-B8G9": "{#Control_L(F2)}",
        "3-B8G9": "{#Control_L(F3)}",
        "4-B8G9": "{#Control_L(F4)}",
        "12-B8G9": "{#Control_L(F5)}",
        "23-B8G9": "{#Control_L(F6)}",
        "34-B8G9": "{#Control_L(F7)}",
        "123-B8G9": "{#Control_L(F8)}",
        "234-B8G9": "{#Control_L(F9)}",
        "14-B8G9": "{#Control_L(F10)}",
        "13-B8G9": "{#Control_L(F11)}",
        "24-B8G9": "{#Control_L(F12)}",
        "STKW-P": "{#Control_L(up)}",
        "STKW-R": "{#Control_L(left)}",
        "STKW-B": "{#Control_L(down)}",
        "STKW-G": "{#Control_L(right)}",
        "STKW-RPG": "{#Control_L(page_up)}",
        "STKW-FBL": "{#Control_L(page_down)}",
        "STKW-FPL": "{#Control_L(home)}",
        "STKW-RBG": "{#Control_L(end)}",
        "STKW-RB": "{#Control_L(return)}",
        "STKW-F": "{#Control_L(backspace)}",
        "STKW-L": "{#Control_L(delete)}",
        "STKW-FR": "{#Control_L(escape)}",
        "STKW-LG": "{#Control_L(tab)}",
        "STKW-RP": "{#Control_L(slash)}",
        "STKW-PG": "{#Control_L(backslash)}",
        "STKH": "{#Alt_L()}",
        "AFLGT": "{#Alt_L(a)}",
        "PW-FLGT": "{#Alt_L(b)}",
        "KR-FLGT": "{#Alt_L(c)}",
        "TK-FLGT": "{#Alt_L(d)}",
        "EFLGT": "{#Alt_L(e)}",
        "TP-FLGT": "{#Alt_L(f)}",
        "TKPW-FLGT": "{#Alt_L(g)}",
        "H-FLGT": "{#Alt_L(h)}",
        "EUFLGT": "{#Alt_L(i)}",
        "SKWR-FLGT": "{#Alt_L(j)}",
        "K-FLGT": "{#Alt_L(k)}",
        "HR-FLGT": "{#Alt_L(l)}",
        "PH-FLGT": "{#Alt_L(m)}",
        "TPH-FLGT": "{#Alt_L(n)}",
        "OFLGT": "{#Alt_L(o)}",
        "P-FLGT": "{#Alt_L(p)}",
        "KW-FLGT": "{#Alt_L(q)}",
        "R-FLGT": "{#Alt_L(r)}",
        "S-FLGT": "{#Alt_L(s)}",
        "T-FLGT": "{#Alt_L(t)}",
        "UFLGT": "{#Alt_L(u)}",
        "SR-FLGT": "{#Alt_L(v)}",
        "W-FLGT": "{#Alt_L(w)}",
        "KP-FLGT": "{#Alt_L(x)}",
        "KWR-FLGT": "{#Alt_L(y)}",
        "STKPW-FLGT": "{#Alt_L(z)}",
        "1-68G9": "{#Alt_L(F1)}",
        "2-68G9": "{#Alt_L(F2)}",
        "3-68G9": "{#Alt_L(F3)}",
        "4-68G9": "{#Alt_L(F4)}",
        "12-68G9": "{#Alt_L(F5)}",
        "23-68G9": "{#Alt_L(F6)}",
        "34-68G9": "{#Alt_L(F7)}",
        "123-68G9": "{#Alt_L(F8)}",
        "234-68G9": "{#Alt_L(F9)}",
        "14-68G9": "{#Alt_L(F10)}",
        "13-68G9": "{#Alt_L(F11)}",
        "24-68G9": "{#Alt_L(F12)}",
        "STKH-P": "{#Alt_L(up)}",
        "STKH-R": "{#Alt_L(left)}",
        "STKH-B": "{#Alt_L(down)}",
        "STKH-G": "{#Alt_L(right)}",
        "STKH-RPG": "{#Alt_L(page_up)}",
        "STKH-FBL": "{#Alt_L(page_down)}",
        "STKH-FPL": "{#Alt_L(home)}",
        "STKH-RBG": "{#Alt_L(end)}",
        "STKH-RB": "{#Alt_L(return)}",
        "STKH-F": "{#Alt_L(backspace)}",
        "STKH-L": "{#Alt_L(delete)}",
        "STKH-FR": "{#Alt_L(escape)}",
        "STKH-LG": "{#Alt_L(tab)}",
        "STKH-RP": "{#Alt_L(slash)}",
        "STKH-PG": "{#Alt_L(backslash)}",
        "STKR": "{#Shift_L()}",
        "ARLGT": "{#Shift_L(a)}",
        "PW-RLGT": "{#Shift_L(b)}",
        "KR-RLGT": "{#Shift_L(c)}",
        "TK-RLGT": "{#Shift_L(d)}",
        "ERLGT": "{#Shift_L(e)}",
        "TP-RLGT": "{#Shift_L(f)}",
        "TKPW-RLGT": "{#Shift_L(g)}",
        "H-RLGT": "{#Shift_L(h)}",
        "EURLGT": "{#Shift_L(i)}",
        "SKWR-RLGT": "{#Shift_L(j)}",
        "K-RLGT": "{#Shift_L(k)}",
        "HR-RLGT": "{#Shift_L(l)}",
        "PH-RLGT": "{#Shift_L(m)}",
        "TPH-RLGT": "{#Shift_L(n)}",
        "ORLGT": "{#Shift_L(o)}",
        "P-RLGT": "{#Shift_L(p)}",
        "KW-RLGT": "{#Shift_L(q)}",
        "R-RLGT": "{#Shift_L(r)}",
        "S-RLGT": "{#Shift_L(s)}",
        "T-RLGT": "{#Shift_L(t)}",
        "URLGT": "{#Shift_L(u)}",
        "SR-RLGT": "{#Shift_L(v)}",
        "W-RLGT": "{#Shift_L(w)}",
        "KP-RLGT": "{#Shift_L(x)}",
        "KWR-RLGT": "{#Shift_L(y)}",
        "STKPW-RLGT": "{#Shift_L(z)}",
        "1-R8G9": "{#Shift_L(F1)}",
        "2-R8G9": "{#Shift_L(F2)}",
        "3-R8G9": "{#Shift_L(F3)}",
        "4-R8G9": "{#Shift_L(F4)}",
        "12-R8G9": "{#Shift_L(F5)}",
        "23-R8G9": "{#Shift_L(F6)}",
        "34-R8G9": "{#Shift_L(F7)}",
        "123-R8G9": "{#Shift_L(F8)}",
        "234-R8G9": "{#Shift_L(F9)}",
        "14-R8G9": "{#Shift_L(F10)}",
        "13-R8G9": "{#Shift_L(F11)}",
        "24-R8G9": "{#Shift_L(F12)}",
        "STKR-P": "{#Shift_L(up)}",
        "STKR-R": "{#Shift_L(left)}",
        "STKR-B": "{#Shift_L(down)}",
        "STKR-G": "{#Shift_L(right)}",
        "STKR-RPG": "{#Shift_L(page_up)}",
        "STKR-FBL": "{#Shift_L(page_down)}",
        "STKR-FPL": "{#Shift_L(home)}",
        "STKR-RBG": "{#Shift_L(end)}",
        "STKR-RB": "{#Shift_L(return)}",
        "STKR-F": "{#Shift_L(backspace)}",
        "STKR-L": "{#Shift_L(delete)}",
        "STKR-FR": "{#Shift_L(escape)}",
        "STKR-LG": "{#Shift_L(tab)}",
        "STKR-RP": "{#Shift_L(slash)}",
        "STKR-PG": "{#Shift_L(backslash)}",
        "STKPW": "{#Super_L(Control_L())}",
        "APBLGT": "{#Super_L(Control_L(a))}",
        "PW-PBLGT": "{#Super_L(Control_L(b))}",
        "KR-PBLGT": "{#Super_L(Control_L(c))}",
        "TK-PBLGT": "{#Super_L(Control_L(d))}",
        "EPBLGT": "{#Super_L(Control_L(e))}",
        "TP-PBLGT": "{#Super_L(Control_L(f))}",
        "TKPW-PBLGT": "{#Super_L(Control_L(g))}",
        "H-PBLGT": "{#Super_L(Control_L(h))}",
        "EUPBLGT": "{#Super_L(Control_L(i))}",
        "SKWR-PBLGT": "{#Super_L(Control_L(j))}",
        "K-PBLGT": "{#Super_L(Control_L(k))}",
        "HR-PBLGT": "{#Super_L(Control_L(l))}",
        "PH-PBLGT": "{#Super_L(Control_L(m))}",
        "TPH-PBLGT": "{#Super_L(Control_L(n))}",
        "OPBLGT": "{#Super_L(Control_L(o))}",
        "P-PBLGT": "{#Super_L(Control_L(p))}",
        "KW-PBLGT": "{#Super_L(Control_L(q))}",
        "R-PBLGT": "{#Super_L(Control_L(r))}",
        "S-PBLGT": "{#Super_L(Control_L(s))}",
        "T-PBLGT": "{#Super_L(Control_L(t))}",
        "UPBLGT": "{#Super_L(Control_L(u))}",
        "SR-PBLGT": "{#Super_L(Control_L(v))}",
        "W-PBLGT": "{#Super_L(Control_L(w))}",
        "KP-PBLGT": "{#Super_L(Control_L(x))}",
        "KWR-PBLGT": "{#Super_L(Control_L(y))}",
        "STKPW-PBLGT": "{#Super_L(Control_L(z))}",
        "1-7B8G9": "{#Super_L(Control_L(F1))}",
        "2-7B8G9": "{#Super_L(Control_L(F2))}",
        "3-7B8G9": "{#Super_L(Control_L(F3))}",
        "4-7B8G9": "{#Super_L(Control_L(F4))}",
        "12-7B8G9": "{#Super_L(Control_L(F5))}",
        "23-7B8G9": "{#Super_L(Control_L(F6))}",
        "34-7B8G9": "{#Super_L(Control_L(F7))}",
        "123-7B8G9": "{#Super_L(Control_L(F8))}",
        "234-7B8G9": "{#Super_L(Control_L(F9))}",
        "14-7B8G9": "{#Super_L(Control_L(F10))}",
        "13-7B8G9": "{#Super_L(Control_L(F11))}",
        "24-7B8G9": "{#Super_L(Control_L(F12))}",
        "STKPW-P": "{#Super_L(Control_L(up))}",
        "STKPW-R": "{#Super_L(Control_L(left))}",
        "STKPW-B": "{#Super_L(Control_L(down))}",
        "STKPW-G": "{#Super_L(Control_L(right))}",
        "STKPW-RPG": "{#Super_L(Control_L(page_up))}",
        "STKPW-FBL": "{#Super_L(Control_L(page_down))}",
        "STKPW-FPL": "{#Super_L(Control_L(home))}",
        "STKPW-RBG": "{#Super_L(Control_L(end))}",
        "STKPW-RB": "{#Super_L(Control_L(return))}",
        "STKPW-F": "{#Super_L(Control_L(backspace))}",
        "STKPW-L": "{#Super_L(Control_L(delete))}",
        "STKPW-FR": "{#Super_L(Control_L(escape))}",
        "STKPW-LG": "{#Super_L(Control_L(tab))}",
        "STKPW-RP": "{#Super_L(Control_L(slash))}",
        "STKPW-PG": "{#Super_L(Control_L(backslash))}",
        "STKPH": "{#Super_L(Alt_L())}",
        "AFPLGT": "{#Super_L(Alt_L(a))}",
        "PW-FPLGT": "{#Super_L(Alt_L(b))}",
        "KR-FPLGT": "{#Super_L(Alt_L(c))}",
        "TK-FPLGT": "{#Super_L(Alt_L(d))}",
        "EFPLGT": "{#Super_L(Alt_L(e))}",
        "TP-FPLGT": "{#Super_L(Alt_L(f))}",
        "TKPW-FPLGT": "{#Super_L(Alt_L(g))}",
        "H-FPLGT": "{#Super_L(Alt_L(h))}",
        "EUFPLGT": "{#Super_L(Alt_L(i))}",
        "SKWR-FPLGT": "{#Super_L(Alt_L(j))}",
        "K-FPLGT": "{#Super_L(Alt_L(k))}",
        "HR-FPLGT": "{#Super_L(Alt_L(l))}",
        "PH-FPLGT": "{#Super_L(Alt_L(m))}",
        "TPH-FPLGT": "{#Super_L(Alt_L(n))}",
        "OFPLGT": "{#Super_L(Alt_L(o))}",
        "P-FPLGT": "{#Super_L(Alt_L(p))}",
        "KW-FPLGT": "{#Super_L(Alt_L(q))}",
        "R-FPLGT": "{#Super_L(Alt_L(r))}",
        "S-FPLGT": "{#Super_L(Alt_L(s))}",
        "T-FPLGT": "{#Super_L(Alt_L(t))}",
        "UFPLGT": "{#Super_L(Alt_L(u))}",
        "SR-FPLGT": "{#Super_L(Alt_L(v))}",
        "W-FPLGT": "{#Super_L(Alt_L(w))}",
        "KP-FPLGT": "{#Super_L(Alt_L(x))}",
        "KWR-FPLGT": "{#Super_L(Alt_L(y))}",
        "STKPW-FPLGT": "{#Super_L(Alt_L(z))}",
        "1-678G9": "{#Super_L(Alt_L(F1))}",
        "2-678G9": "{#Super_L(Alt_L(F2))}",
        "3-678G9": "{#Super_L(Alt_L(F3))}",
        "4-678G9": "{#Super_L(Alt_L(F4))}",
        "12-678G9": "{#Super_L(Alt_L(F5))}",
        "23-678G9": "{#Super_L(Alt_L(F6))}",
        "34-678G9": "{#Super_L(Alt_L(F7))}",
        "123-678G9": "{#Super_L(Alt_L(F8))}",
        "234-678G9": "{#Super_L(Alt_L(F9))}",
        "14-678G9": "{#Super_L(Alt_L(F10))}",
        "13-678G9": "{#Super_L(Alt_L(F11))}",
        "24-678G9": "{#Super_L(Alt_L(F12))}",
        "STKPH-P": "{#Super_L(Alt_L(up))}",
        "STKPH-R": "{#Super_L(Alt_L(left))}",
        "STKPH-B": "{#Super_L(Alt_L(down))}",
        "STKPH-G": "{#Super_L(Alt_L(right))}",
        "STKPH-RPG": "{#Super_L(Alt_L(page_up))}",
        "STKPH-FBL": "{#Super_L(Alt_L(page_down))}",
        "STKPH-FPL": "{#Super_L(Alt_L(home))}",
        "STKPH-RBG": "{#Super_L(Alt_L(end))}",
        "STKPH-RB": "{#Super_L(Alt_L(return))}",
        "STKPH-F": "{#Super_L(Alt_L(backspace))}",
        "STKPH-L": "{#Super_L(Alt_L(delete))}",
        "STKPH-FR": "{#Super_L(Alt_L(escape))}",
        "STKPH-LG": "{#Super_L(Alt_L(tab))}",
        "STKPH-RP": "{#Super_L(Alt_L(slash))}",
        "STKPH-PG": "{#Super_L(Alt_L(backslash))}",
        "STKPR": "{#Super_L(Shift_L())}",
        "ARPLGT": "{#Super_L(Shift_L(a))}",
        "PW-RPLGT": "{#Super_L(Shift_L(b))}",
        "KR-RPLGT": "{#Super_L(Shift_L(c))}",
        "TK-RPLGT": "{#Super_L(Shift_L(d))}",
        "ERPLGT": "{#Super_L(Shift_L(e))}",
        "TP-RPLGT": "{#Super_L(Shift_L(f))}",
        "TKPW-RPLGT": "{#Super_L(Shift_L(g))}",
        "H-RPLGT": "{#Super_L(Shift_L(h))}",
        "EURPLGT": "{#Super_L(Shift_L(i))}",
        "SKWR-RPLGT": "{#Super_L(Shift_L(j))}",
        "K-RPLGT": "{#Super_L(Shift_L(k))}",
        "HR-RPLGT": "{#Super_L(Shift_L(l))}",
        "PH-RPLGT": "{#Super_L(Shift_L(m))}",
        "TPH-RPLGT": "{#Super_L(Shift_L(n))}",
        "ORPLGT": "{#Super_L(Shift_L(o))}",
        "P-RPLGT": "{#Super_L(Shift_L(p))}",
        "KW-RPLGT": "{#Super_L(Shift_L(q))}",
        "R-RPLGT": "{#Super_L(Shift_L(r))}",
        "S-RPLGT": "{#Super_L(Shift_L(s))}",
        "T-RPLGT": "{#Super_L(Shift_L(t))}",
        "URPLGT": "{#Super_L(Shift_L(u))}",
        "SR-RPLGT": "{#Super_L(Shift_L(v))}",
        "W-RPLGT": "{#Super_L(Shift_L(w))}",
        "KP-RPLGT": "{#Super_L(Shift_L(x))}",
        "KWR-RPLGT": "{#Super_L(Shift_L(y))}",
        "STKPW-RPLGT": "{#Super_L(Shift_L(z))}",
        "1-R78G9": "{#Super_L(Shift_L(F1))}",
        "2-R78G9": "{#Super_L(Shift_L(F2))}",
        "3-R78G9": "{#Super_L(Shift_L(F3))}",
        "4-R78G9": "{#Super_L(Shift_L(F4))}",
        "12-R78G9": "{#Super_L(Shift_L(F5))}",
        "23-R78G9": "{#Super_L(Shift_L(F6))}",
        "34-R78G9": "{#Super_L(Shift_L(F7))}",
        "123-R78G9": "{#Super_L(Shift_L(F8))}",
        "234-R78G9": "{#Super_L(Shift_L(F9))}",
        "14-R78G9": "{#Super_L(Shift_L(F10))}",
        "13-R78G9": "{#Super_L(Shift_L(F11))}",
        "24-R78G9": "{#Super_L(Shift_L(F12))}",
        "STKPR-P": "{#Super_L(Shift_L(up))}",
        "STKPR-R": "{#Super_L(Shift_L(left))}",
        "STKPR-B": "{#Super_L(Shift_L(down))}",
        "STKPR-G": "{#Super_L(Shift_L(right))}",
        "STKPR-RPG": "{#Super_L(Shift_L(page_up))}",
        "STKPR-FBL": "{#Super_L(Shift_L(page_down))}",
        "STKPR-FPL": "{#Super_L(Shift_L(home))}",
        "STKPR-RBG": "{#Super_L(Shift_L(end))}",
        "STKPR-RB": "{#Super_L(Shift_L(return))}",
        "STKPR-F": "{#Super_L(Shift_L(backspace))}",
        "STKPR-L": "{#Super_L(Shift_L(delete))}",
        "STKPR-FR": "{#Super_L(Shift_L(escape))}",
        "STKPR-LG": "{#Super_L(Shift_L(tab))}",
        "STKPR-RP": "{#Super_L(Shift_L(slash))}",
        "STKPR-PG": "{#Super_L(Shift_L(backslash))}",
        "STKWH": "{#Control_L(Alt_L())}",
        "AFBLGT": "{#Control_L(Alt_L(a))}",
        "PW-FBLGT": "{#Control_L(Alt_L(b))}",
        "KR-FBLGT": "{#Control_L(Alt_L(c))}",
        "TK-FBLGT": "{#Control_L(Alt_L(d))}",
        "EFBLGT": "{#Control_L(Alt_L(e))}",
        "TP-FBLGT": "{#Control_L(Alt_L(f))}",
        "TKPW-FBLGT": "{#Control_L(Alt_L(g))}",
        "H-FBLGT": "{#Control_L(Alt_L(h))}",
        "EUFBLGT": "{#Control_L(Alt_L(i))}",
        "SKWR-FBLGT": "{#Control_L(Alt_L(j))}",
        "K-FBLGT": "{#Control_L(Alt_L(k))}",
        "HR-FBLGT": "{#Control_L(Alt_L(l))}",
        "PH-FBLGT": "{#Control_L(Alt_L(m))}",
        "TPH-FBLGT": "{#Control_L(Alt_L(n))}",
        "OFBLGT": "{#Control_L(Alt_L(o))}",
        "P-FBLGT": "{#Control_L(Alt_L(p))}",
        "KW-FBLGT": "{#Control_L(Alt_L(q))}",
        "R-FBLGT": "{#Control_L(Alt_L(r))}",
        "S-FBLGT": "{#Control_L(Alt_L(s))}",
        "T-FBLGT": "{#Control_L(Alt_L(t))}",
        "UFBLGT": "{#Control_L(Alt_L(u))}",
        "SR-FBLGT": "{#Control_L(Alt_L(v))}",
        "W-FBLGT": "{#Control_L(Alt_L(w))}",
        "KP-FBLGT": "{#Control_L(Alt_L(x))}",
        "KWR-FBLGT": "{#Control_L(Alt_L(y))}",
        "STKPW-FBLGT": "{#Control_L(Alt_L(z))}",
        "1-6B8G9": "{#Control_L(Alt_L(F1))}",
        "2-6B8G9": "{#Control_L(Alt_L(F2))}",
        "3-6B8G9": "{#Control_L(Alt_L(F3))}",
        "4-6B8G9": "{#Control_L(Alt_L(F4))}",
        "12-6B8G9": "{#Control_L(Alt_L(F5))}",
        "23-6B8G9": "{#Control_L(Alt_L(F6))}",
        "34-6B8G9": "{#Control_L(Alt_L(F7))}",
        "123-6B8G9": "{#Control_L(Alt_L(F8))}",
        "234-6B8G9": "{#Control_L(Alt_L(F9))}",
        "14-6B8G9": "{#Control_L(Alt_L(F10))}",
        "13-6B8G9": "{#Control_L(Alt_L(F11))}",
        "24-6B8G9": "{#Control_L(Alt_L(F12))}",
        "STKWH-P": "{#Control_L(Alt_L(up))}",
        "STKWH-R": "{#Control_L(Alt_L(left))}",
        "STKWH-B": "{#Control_L(Alt_L(down))}",
        "STKWH-G": "{#Control_L(Alt_L(right))}",
        "STKWH-RPG": "{#Control_L(Alt_L(page_up))}",
        "STKWH-FBL": "{#Control_L(Alt_L(page_down))}",
        "STKWH-FPL": "{#Control_L(Alt_L(home))}",
        "STKWH-RBG": "{#Control_L(Alt_L(end))}",
        "STKWH-RB": "{#Control_L(Alt_L(return))}",
        "STKWH-F": "{#Control_L(Alt_L(backspace))}",
        "STKWH-L": "{#Control_L(Alt_L(delete))}",
        "STKWH-FR": "{#Control_L(Alt_L(escape))}",
        "STKWH-LG": "{#Control_L(Alt_L(tab))}",
        "STKWH-RP": "{#Control_L(Alt_L(slash))}",
        "STKWH-PG": "{#Control_L(Alt_L(backslash))}",
        "STKWR": "{#Control_L(Shift_L())}",
        "ARBLGT": "{#Control_L(Shift_L(a))}",
        "PW-RBLGT": "{#Control_L(Shift_L(b))}",
        "KR-RBLGT": "{#Control_L(Shift_L(c))}",
        "TK-RBLGT": "{#Control_L(Shift_L(d))}",
        "ERBLGT": "{#Control_L(Shift_L(e))}",
        "TP-RBLGT": "{#Control_L(Shift_L(f))}",
        "TKPW-RBLGT": "{#Control_L(Shift_L(g))}",
        "H-RBLGT": "{#Control_L(Shift_L(h))}",
        "EURBLGT": "{#Control_L(Shift_L(i))}",
        "SKWR-RBLGT": "{#Control_L(Shift_L(j))}",
        "K-RBLGT": "{#Control_L(Shift_L(k))}",
        "HR-RBLGT": "{#Control_L(Shift_L(l))}",
        "PH-RBLGT": "{#Control_L(Shift_L(m))}",
        "TPH-RBLGT": "{#Control_L(Shift_L(n))}",
        "ORBLGT": "{#Control_L(Shift_L(o))}",
        "P-RBLGT": "{#Control_L(Shift_L(p))}",
        "KW-RBLGT": "{#Control_L(Shift_L(q))}",
        "R-RBLGT": "{#Control_L(Shift_L(r))}",
        "S-RBLGT": "{#Control_L(Shift_L(s))}",
        "T-RBLGT": "{#Control_L(Shift_L(t))}",
        "URBLGT": "{#Control_L(Shift_L(u))}",
        "SR-RBLGT": "{#Control_L(Shift_L(v))}",
        "W-RBLGT": "{#Control_L(Shift_L(w))}",
        "KP-RBLGT": "{#Control_L(Shift_L(x))}",
        "KWR-RBLGT": "{#Control_L(Shift_L(y))}",
        "STKPW-RBLGT": "{#Control_L(Shift_L(z))}",
        "1-RB8G9": "{#Control_L(Shift_L(F1))}",
        "2-RB8G9": "{#Control_L(Shift_L(F2))}",
        "3-RB8G9": "{#Control_L(Shift_L(F3))}",
        "4-RB8G9": "{#Control_L(Shift_L(F4))}",
        "12-RB8G9": "{#Control_L(Shift_L(F5))}",
        "23-RB8G9": "{#Control_L(Shift_L(F6))}",
        "34-RB8G9": "{#Control_L(Shift_L(F7))}",
        "123-RB8G9": "{#Control_L(Shift_L(F8))}",
        "234-RB8G9": "{#Control_L(Shift_L(F9))}",
        "14-RB8G9": "{#Control_L(Shift_L(F10))}",
        "13-RB8G9": "{#Control_L(Shift_L(F11))}",
        "24-RB8G9": "{#Control_L(Shift_L(F12))}",
        "STKWR-P": "{#Control_L(Shift_L(up))}",
        "STKWR-R": "{#Control_L(Shift_L(left))}",
        "STKWR-B": "{#Control_L(Shift_L(down))}",
        "STKWR-G": "{#Control_L(Shift_L(right))}",
        "STKWR-RPG": "{#Control_L(Shift_L(page_up))}",
        "STKWR-FBL": "{#Control_L(Shift_L(page_down))}",
        "STKWR-FPL": "{#Control_L(Shift_L(home))}",
        "STKWR-RBG": "{#Control_L(Shift_L(end))}",
        "STKWR-RB": "{#Control_L(Shift_L(return))}",
        "STKWR-F": "{#Control_L(Shift_L(backspace))}",
        "STKWR-L": "{#Control_L(Shift_L(delete))}",
        "STKWR-FR": "{#Control_L(Shift_L(escape))}",
        "STKWR-LG": "{#Control_L(Shift_L(tab))}",
        "STKWR-RP": "{#Control_L(Shift_L(slash))}",
        "STKWR-PG": "{#Control_L(Shift_L(backslash))}",
        "STKHR": "{#Alt_L(Shift_L())}",
        "AFRLGT": "{#Alt_L(Shift_L(a))}",
        "PW-FRLGT": "{#Alt_L(Shift_L(b))}",
        "KR-FRLGT": "{#Alt_L(Shift_L(c))}",
        "TK-FRLGT": "{#Alt_L(Shift_L(d))}",
        "EFRLGT": "{#Alt_L(Shift_L(e))}",
        "TP-FRLGT": "{#Alt_L(Shift_L(f))}",
        "TKPW-FRLGT": "{#Alt_L(Shift_L(g))}",
        "H-FRLGT": "{#Alt_L(Shift_L(h))}",
        "EUFRLGT": "{#Alt_L(Shift_L(i))}",
        "SKWR-FRLGT": "{#Alt_L(Shift_L(j))}",
        "K-FRLGT": "{#Alt_L(Shift_L(k))}",
        "HR-FRLGT": "{#Alt_L(Shift_L(l))}",
        "PH-FRLGT": "{#Alt_L(Shift_L(m))}",
        "TPH-FRLGT": "{#Alt_L(Shift_L(n))}",
        "OFRLGT": "{#Alt_L(Shift_L(o))}",
        "P-FRLGT": "{#Alt_L(Shift_L(p))}",
        "KW-FRLGT": "{#Alt_L(Shift_L(q))}",
        "R-FRLGT": "{#Alt_L(Shift_L(r))}",
        "S-FRLGT": "{#Alt_L(Shift_L(s))}",
        "T-FRLGT": "{#Alt_L(Shift_L(t))}",
        "UFRLGT": "{#Alt_L(Shift_L(u))}",
        "SR-FRLGT": "{#Alt_L(Shift_L(v))}",
        "W-FRLGT": "{#Alt_L(Shift_L(w))}",
        "KP-FRLGT": "{#Alt_L(Shift_L(x))}",
        "KWR-FRLGT": "{#Alt_L(Shift_L(y))}",
        "STKPW-FRLGT": "{#Alt_L(Shift_L(z))}",
        "1-6R8G9": "{#Alt_L(Shift_L(F1))}",
        "2-6R8G9": "{#Alt_L(Shift_L(F2))}",
        "3-6R8G9": "{#Alt_L(Shift_L(F3))}",
        "4-6R8G9": "{#Alt_L(Shift_L(F4))}",
        "12-6R8G9": "{#Alt_L(Shift_L(F5))}",
        "23-6R8G9": "{#Alt_L(Shift_L(F6))}",
        "34-6R8G9": "{#Alt_L(Shift_L(F7))}",
        "123-6R8G9": "{#Alt_L(Shift_L(F8))}",
        "234-6R8G9": "{#Alt_L(Shift_L(F9))}",
        "14-6R8G9": "{#Alt_L(Shift_L(F10))}",
        "13-6R8G9": "{#Alt_L(Shift_L(F11))}",
        "24-6R8G9": "{#Alt_L(Shift_L(F12))}",
        "STKHR-P": "{#Alt_L(Shift_L(up))}",
        "STKHR-R": "{#Alt_L(Shift_L(left))}",
        "STKHR-B": "{#Alt_L(Shift_L(down))}",
        "STKHR-G": "{#Alt_L(Shift_L(right))}",
        "STKHR-RPG": "{#Alt_L(Shift_L(page_up))}",
        "STKHR-FBL": "{#Alt_L(Shift_L(page_down))}",
        "STKHR-FPL": "{#Alt_L(Shift_L(home))}",
        "STKHR-RBG": "{#Alt_L(Shift_L(end))}",
        "STKHR-RB": "{#Alt_L(Shift_L(return))}",
        "STKHR-F": "{#Alt_L(Shift_L(backspace))}",
        "STKHR-L": "{#Alt_L(Shift_L(delete))}",
        "STKHR-FR": "{#Alt_L(Shift_L(escape))}",
        "STKHR-LG": "{#Alt_L(Shift_L(tab))}",
        "STKHR-RP": "{#Alt_L(Shift_L(slash))}",
        "STKHR-PG": "{#Alt_L(Shift_L(backslash))}",
        "STKPWH": "{#Super_L(Control_L(Alt_L()))}",
        "AFPBLGT": "{#Super_L(Control_L(Alt_L(a)))}",
        "PW-FPBLGT": "{#Super_L(Control_L(Alt_L(b)))}",
        "KR-FPBLGT": "{#Super_L(Control_L(Alt_L(c)))}",
        "TK-FPBLGT": "{#Super_L(Control_L(Alt_L(d)))}",
        "EFPBLGT": "{#Super_L(Control_L(Alt_L(e)))}",
        "TP-FPBLGT": "{#Super_L(Control_L(Alt_L(f)))}",
        "TKPW-FPBLGT": "{#Super_L(Control_L(Alt_L(g)))}",
        "H-FPBLGT": "{#Super_L(Control_L(Alt_L(h)))}",
        "EUFPBLGT": "{#Super_L(Control_L(Alt_L(i)))}",
        "SKWR-FPBLGT": "{#Super_L(Control_L(Alt_L(j)))}",
        "K-FPBLGT": "{#Super_L(Control_L(Alt_L(k)))}",
        "HR-FPBLGT": "{#Super_L(Control_L(Alt_L(l)))}",
        "PH-FPBLGT": "{#Super_L(Control_L(Alt_L(m)))}",
        "TPH-FPBLGT": "{#Super_L(Control_L(Alt_L(n)))}",
        "OFPBLGT": "{#Super_L(Control_L(Alt_L(o)))}",
        "P-FPBLGT": "{#Super_L(Control_L(Alt_L(p)))}",
        "KW-FPBLGT": "{#Super_L(Control_L(Alt_L(q)))}",
        "R-FPBLGT": "{#Super_L(Control_L(Alt_L(r)))}",
        "S-FPBLGT": "{#Super_L(Control_L(Alt_L(s)))}",
        "T-FPBLGT": "{#Super_L(Control_L(Alt_L(t)))}",
        "UFPBLGT": "{#Super_L(Control_L(Alt_L(u)))}",
        "SR-FPBLGT": "{#Super_L(Control_L(Alt_L(v)))}",
        "W-FPBLGT": "{#Super_L(Control_L(Alt_L(w)))}",
        "KP-FPBLGT": "{#Super_L(Control_L(Alt_L(x)))}",
        "KWR-FPBLGT": "{#Super_L(Control_L(Alt_L(y)))}",
        "STKPW-FPBLGT": "{#Super_L(Control_L(Alt_L(z)))}",
        "1-67B8G9": "{#Super_L(Control_L(Alt_L(F1)))}",
        "2-67B8G9": "{#Super_L(Control_L(Alt_L(F2)))}",
        "3-67B8G9": "{#Super_L(Control_L(Alt_L(F3)))}",
        "4-67B8G9": "{#Super_L(Control_L(Alt_L(F4)))}",
        "12-67B8G9": "{#Super_L(Control_L(Alt_L(F5)))}",
        "23-67B8G9": "{#Super_L(Control_L(Alt_L(F6)))}",
        "34-67B8G9": "{#Super_L(Control_L(Alt_L(F7)))}",
        "123-67B8G9": "{#Super_L(Control_L(Alt_L(F8)))}",
        "234-67B8G9": "{#Super_L(Control_L(Alt_L(F9)))}",
        "14-67B8G9": "{#Super_L(Control_L(Alt_L(F10)))}",
        "13-67B8G9": "{#Super_L(Control_L(Alt_L(F11)))}",
        "24-67B8G9": "{#Super_L(Control_L(Alt_L(F12)))}",
        "STKPWH-P": "{#Super_L(Control_L(Alt_L(up)))}",
        "STKPWH-R": "{#Super_L(Control_L(Alt_L(left)))}",
        "STKPWH-B": "{#Super_L(Control_L(Alt_L(down)))}",
        "STKPWH-G": "{#Super_L(Control_L(Alt_L(right)))}",
        "STKPWH-RPG": "{#Super_L(Control_L(Alt_L(page_up)))}",
        "STKPWH-FBL": "{#Super_L(Control_L(Alt_L(page_down)))}",
        "STKPWH-FPL": "{#Super_L(Control_L(Alt_L(home)))}",
        "STKPWH-RBG": "{#Super_L(Control_L(Alt_L(end)))}",
        "STKPWH-RB": "{#Super_L(Control_L(Alt_L(return)))}",
        "STKPWH-F": "{#Super_L(Control_L(Alt_L(backspace)))}",
        "STKPWH-L": "{#Super_L(Control_L(Alt_L(delete)))}",
        "STKPWH-FR": "{#Super_L(Control_L(Alt_L(escape)))}",
        "STKPWH-LG": "{#Super_L(Control_L(Alt_L(tab)))}",
        "STKPWH-RP": "{#Super_L(Control_L(Alt_L(slash)))}",
        "STKPWH-PG": "{#Super_L(Control_L(Alt_L(backslash)))}",
        "STKPWR": "{#Super_L(Control_L(Shift_L()))}",
        "ARPBLGT": "{#Super_L(Control_L(Shift_L(a)))}",
        "PW-RPBLGT": "{#Super_L(Control_L(Shift_L(b)))}",
        "KR-RPBLGT": "{#Super_L(Control_L(Shift_L(c)))}",
        "TK-RPBLGT": "{#Super_L(Control_L(Shift_L(d)))}",
        "ERPBLGT": "{#Super_L(Control_L(Shift_L(e)))}",
        "TP-RPBLGT": "{#Super_L(Control_L(Shift_L(f)))}",
        "TKPW-RPBLGT": "{#Super_L(Control_L(Shift_L(g)))}",
        "H-RPBLGT": "{#Super_L(Control_L(Shift_L(h)))}",
        "EURPBLGT": "{#Super_L(Control_L(Shift_L(i)))}",
        "SKWR-RPBLGT": "{#Super_L(Control_L(Shift_L(j)))}",
        "K-RPBLGT": "{#Super_L(Control_L(Shift_L(k)))}",
        "HR-RPBLGT": "{#Super_L(Control_L(Shift_L(l)))}",
        "PH-RPBLGT": "{#Super_L(Control_L(Shift_L(m)))}",
        "TPH-RPBLGT": "{#Super_L(Control_L(Shift_L(n)))}",
        "ORPBLGT": "{#Super_L(Control_L(Shift_L(o)))}",
        "P-RPBLGT": "{#Super_L(Control_L(Shift_L(p)))}",
        "KW-RPBLGT": "{#Super_L(Control_L(Shift_L(q)))}",
        "R-RPBLGT": "{#Super_L(Control_L(Shift_L(r)))}",
        "S-RPBLGT": "{#Super_L(Control_L(Shift_L(s)))}",
        "T-RPBLGT": "{#Super_L(Control_L(Shift_L(t)))}",
        "URPBLGT": "{#Super_L(Control_L(Shift_L(u)))}",
        "SR-RPBLGT": "{#Super_L(Control_L(Shift_L(v)))}",
        "W-RPBLGT": "{#Super_L(Control_L(Shift_L(w)))}",
        "KP-RPBLGT": "{#Super_L(Control_L(Shift_L(x)))}",
        "KWR-RPBLGT": "{#Super_L(Control_L(Shift_L(y)))}",
        "STKPW-RPBLGT": "{#Super_L(Control_L(Shift_L(z)))}",
        "1-R7B8G9": "{#Super_L(Control_L(Shift_L(F1)))}",
        "2-R7B8G9": "{#Super_L(Control_L(Shift_L(F2)))}",
        "3-R7B8G9": "{#Super_L(Control_L(Shift_L(F3)))}",
        "4-R7B8G9": "{#Super_L(Control_L(Shift_L(F4)))}",
        "12-R7B8G9": "{#Super_L(Control_L(Shift_L(F5)))}",
        "23-R7B8G9": "{#Super_L(Control_L(Shift_L(F6)))}",
        "34-R7B8G9": "{#Super_L(Control_L(Shift_L(F7)))}",
        "123-R7B8G9": "{#Super_L(Control_L(Shift_L(F8)))}",
        "234-R7B8G9": "{#Super_L(Control_L(Shift_L(F9)))}",
        "14-R7B8G9": "{#Super_L(Control_L(Shift_L(F10)))}",
        "13-R7B8G9": "{#Super_L(Control_L(Shift_L(F11)))}",
        "24-R7B8G9": "{#Super_L(Control_L(Shift_L(F12)))}",
        "STKPWR-P": "{#Super_L(Control_L(Shift_L(up)))}",
        "STKPWR-R": "{#Super_L(Control_L(Shift_L(left)))}",
        "STKPWR-B": "{#Super_L(Control_L(Shift_L(down)))}",
        "STKPWR-G": "{#Super_L(Control_L(Shift_L(right)))}",
        "STKPWR-RPG": "{#Super_L(Control_L(Shift_L(page_up)))}",
        "STKPWR-FBL": "{#Super_L(Control_L(Shift_L(page_down)))}",
        "STKPWR-FPL": "{#Super_L(Control_L(Shift_L(home)))}",
        "STKPWR-RBG": "{#Super_L(Control_L(Shift_L(end)))}",
        "STKPWR-RB": "{#Super_L(Control_L(Shift_L(return)))}",
        "STKPWR-F": "{#Super_L(Control_L(Shift_L(backspace)))}",
        "STKPWR-L": "{#Super_L(Control_L(Shift_L(delete)))}",
        "STKPWR-FR": "{#Super_L(Control_L(Shift_L(escape)))}",
        "STKPWR-LG": "{#Super_L(Control_L(Shift_L(tab)))}",
        "STKPWR-RP": "{#Super_L(Control_L(Shift_L(slash)))}",
        "STKPWR-PG": "{#Super_L(Control_L(Shift_L(backslash)))}",
        "STKPHR": "{#Super_L(Alt_L(Shift_L()))}",
        "AFRPLGT": "{#Super_L(Alt_L(Shift_L(a)))}",
        "PW-FRPLGT": "{#Super_L(Alt_L(Shift_L(b)))}",
        "KR-FRPLGT": "{#Super_L(Alt_L(Shift_L(c)))}",
        "TK-FRPLGT": "{#Super_L(Alt_L(Shift_L(d)))}",
        "EFRPLGT": "{#Super_L(Alt_L(Shift_L(e)))}",
        "TP-FRPLGT": "{#Super_L(Alt_L(Shift_L(f)))}",
        "TKPW-FRPLGT": "{#Super_L(Alt_L(Shift_L(g)))}",
        "H-FRPLGT": "{#Super_L(Alt_L(Shift_L(h)))}",
        "EUFRPLGT": "{#Super_L(Alt_L(Shift_L(i)))}",
        "SKWR-FRPLGT": "{#Super_L(Alt_L(Shift_L(j)))}",
        "K-FRPLGT": "{#Super_L(Alt_L(Shift_L(k)))}",
        "HR-FRPLGT": "{#Super_L(Alt_L(Shift_L(l)))}",
        "PH-FRPLGT": "{#Super_L(Alt_L(Shift_L(m)))}",
        "TPH-FRPLGT": "{#Super_L(Alt_L(Shift_L(n)))}",
        "OFRPLGT": "{#Super_L(Alt_L(Shift_L(o)))}",
        "P-FRPLGT": "{#Super_L(Alt_L(Shift_L(p)))}",
        "KW-FRPLGT": "{#Super_L(Alt_L(Shift_L(q)))}",
        "R-FRPLGT": "{#Super_L(Alt_L(Shift_L(r)))}",
        "S-FRPLGT": "{#Super_L(Alt_L(Shift_L(s)))}",
        "T-FRPLGT": "{#Super_L(Alt_L(Shift_L(t)))}",
        "UFRPLGT": "{#Super_L(Alt_L(Shift_L(u)))}",
        "SR-FRPLGT": "{#Super_L(Alt_L(Shift_L(v)))}",
        "W-FRPLGT": "{#Super_L(Alt_L(Shift_L(w)))}",
        "KP-FRPLGT": "{#Super_L(Alt_L(Shift_L(x)))}",
        "KWR-FRPLGT": "{#Super_L(Alt_L(Shift_L(y)))}",
        "STKPW-FRPLGT": "{#Super_L(Alt_L(Shift_L(z)))}",
        "1-6R78G9": "{#Super_L(Alt_L(Shift_L(F1)))}",
        "2-6R78G9": "{#Super_L(Alt_L(Shift_L(F2)))}",
        "3-6R78G9": "{#Super_L(Alt_L(Shift_L(F3)))}",
        "4-6R78G9": "{#Super_L(Alt_L(Shift_L(F4)))}",
        "12-6R78G9": "{#Super_L(Alt_L(Shift_L(F5)))}",
        "23-6R78G9": "{#Super_L(Alt_L(Shift_L(F6)))}",
        "34-6R78G9": "{#Super_L(Alt_L(Shift_L(F7)))}",
        "123-6R78G9": "{#Super_L(Alt_L(Shift_L(F8)))}",
        "234-6R78G9": "{#Super_L(Alt_L(Shift_L(F9)))}",
        "14-6R78G9": "{#Super_L(Alt_L(Shift_L(F10)))}",
        "13-6R78G9": "{#Super_L(Alt_L(Shift_L(F11)))}",
        "24-6R78G9": "{#Super_L(Alt_L(Shift_L(F12)))}",
        "STKPHR-P": "{#Super_L(Alt_L(Shift_L(up)))}",
        "STKPHR-R": "{#Super_L(Alt_L(Shift_L(left)))}",
        "STKPHR-B": "{#Super_L(Alt_L(Shift_L(down)))}",
        "STKPHR-G": "{#Super_L(Alt_L(Shift_L(right)))}",
        "STKPHR-RPG": "{#Super_L(Alt_L(Shift_L(page_up)))}",
        "STKPHR-FBL": "{#Super_L(Alt_L(Shift_L(page_down)))}",
        "STKPHR-FPL": "{#Super_L(Alt_L(Shift_L(home)))}",
        "STKPHR-RBG": "{#Super_L(Alt_L(Shift_L(end)))}",
        "STKPHR-RB": "{#Super_L(Alt_L(Shift_L(return)))}",
        "STKPHR-F": "{#Super_L(Alt_L(Shift_L(backspace)))}",
        "STKPHR-L": "{#Super_L(Alt_L(Shift_L(delete)))}",
        "STKPHR-FR": "{#Super_L(Alt_L(Shift_L(escape)))}",
        "STKPHR-LG": "{#Super_L(Alt_L(Shift_L(tab)))}",
        "STKPHR-RP": "{#Super_L(Alt_L(Shift_L(slash)))}",
        "STKPHR-PG": "{#Super_L(Alt_L(Shift_L(backslash)))}",
        "STKWHR": "{#Control_L(Alt_L(Shift_L()))}",
        "AFRBLGT": "{#Control_L(Alt_L(Shift_L(a)))}",
        "PW-FRBLGT": "{#Control_L(Alt_L(Shift_L(b)))}",
        "KR-FRBLGT": "{#Control_L(Alt_L(Shift_L(c)))}",
        "TK-FRBLGT": "{#Control_L(Alt_L(Shift_L(d)))}",
        "EFRBLGT": "{#Control_L(Alt_L(Shift_L(e)))}",
        "TP-FRBLGT": "{#Control_L(Alt_L(Shift_L(f)))}",
        "TKPW-FRBLGT": "{#Control_L(Alt_L(Shift_L(g)))}",
        "H-FRBLGT": "{#Control_L(Alt_L(Shift_L(h)))}",
        "EUFRBLGT": "{#Control_L(Alt_L(Shift_L(i)))}",
        "SKWR-FRBLGT": "{#Control_L(Alt_L(Shift_L(j)))}",
        "K-FRBLGT": "{#Control_L(Alt_L(Shift_L(k)))}",
        "HR-FRBLGT": "{#Control_L(Alt_L(Shift_L(l)))}",
        "PH-FRBLGT": "{#Control_L(Alt_L(Shift_L(m)))}",
        "TPH-FRBLGT": "{#Control_L(Alt_L(Shift_L(n)))}",
        "OFRBLGT": "{#Control_L(Alt_L(Shift_L(o)))}",
        "P-FRBLGT": "{#Control_L(Alt_L(Shift_L(p)))}",
        "KW-FRBLGT": "{#Control_L(Alt_L(Shift_L(q)))}",
        "R-FRBLGT": "{#Control_L(Alt_L(Shift_L(r)))}",
        "S-FRBLGT": "{#Control_L(Alt_L(Shift_L(s)))}",
        "T-FRBLGT": "{#Control_L(Alt_L(Shift_L(t)))}",
        "UFRBLGT": "{#Control_L(Alt_L(Shift_L(u)))}",
        "SR-FRBLGT": "{#Control_L(Alt_L(Shift_L(v)))}",
        "W-FRBLGT": "{#Control_L(Alt_L(Shift_L(w)))}",
        "KP-FRBLGT": "{#Control_L(Alt_L(Shift_L(x)))}",
        "KWR-FRBLGT": "{#Control_L(Alt_L(Shift_L(y)))}",
        "STKPW-FRBLGT": "{#Control_L(Alt_L(Shift_L(z)))}",
        "1-6RB8G9": "{#Control_L(Alt_L(Shift_L(F1)))}",
        "2-6RB8G9": "{#Control_L(Alt_L(Shift_L(F2)))}",
        "3-6RB8G9": "{#Control_L(Alt_L(Shift_L(F3)))}",
        "4-6RB8G9": "{#Control_L(Alt_L(Shift_L(F4)))}",
        "12-6RB8G9": "{#Control_L(Alt_L(Shift_L(F5)))}",
        "23-6RB8G9": "{#Control_L(Alt_L(Shift_L(F6)))}",
        "34-6RB8G9": "{#Control_L(Alt_L(Shift_L(F7)))}",
        "123-6RB8G9": "{#Control_L(Alt_L(Shift_L(F8)))}",
        "234-6RB8G9": "{#Control_L(Alt_L(Shift_L(F9)))}",
        "14-6RB8G9": "{#Control_L(Alt_L(Shift_L(F10)))}",
        "13-6RB8G9": "{#Control_L(Alt_L(Shift_L(F11)))}",
        "24-6RB8G9": "{#Control_L(Alt_L(Shift_L(F12)))}",
        "STKWHR-P": "{#Control_L(Alt_L(Shift_L(up)))}",
        "STKWHR-R": "{#Control_L(Alt_L(Shift_L(left)))}",
        "STKWHR-B": "{#Control_L(Alt_L(Shift_L(down)))}",
        "STKWHR-G": "{#Control_L(Alt_L(Shift_L(right)))}",
        "STKWHR-RPG": "{#Control_L(Alt_L(Shift_L(page_up)))}",
        "STKWHR-FBL": "{#Control_L(Alt_L(Shift_L(page_down)))}",
        "STKWHR-FPL": "{#Control_L(Alt_L(Shift_L(home)))}",
        "STKWHR-RBG": "{#Control_L(Alt_L(Shift_L(end)))}",
        "STKWHR-RB": "{#Control_L(Alt_L(Shift_L(return)))}",
        "STKWHR-F": "{#Control_L(Alt_L(Shift_L(backspace)))}",
        "STKWHR-L": "{#Control_L(Alt_L(Shift_L(delete)))}",
        "STKWHR-FR": "{#Control_L(Alt_L(Shift_L(escape)))}",
        "STKWHR-LG": "{#Control_L(Alt_L(Shift_L(tab)))}",
        "STKWHR-RP": "{#Control_L(Alt_L(Shift_L(slash)))}",
        "STKWHR-PG": "{#Control_L(Alt_L(Shift_L(backslash)))}",
        "STKPWHR": "{#Super_L(Control_L(Alt_L(Shift_L())))}",
        "AFRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(a))))}",
        "PW-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(b))))}",
        "KR-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(c))))}",
        "TK-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(d))))}",
        "EFRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(e))))}",
        "TP-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(f))))}",
        "TKPW-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(g))))}",
        "H-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(h))))}",
        "EUFRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(i))))}",
        "SKWR-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(j))))}",
        "K-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(k))))}",
        "HR-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(l))))}",
        "PH-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(m))))}",
        "TPH-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(n))))}",
        "OFRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(o))))}",
        "P-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(p))))}",
        "KW-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(q))))}",
        "R-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(r))))}",
        "S-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(s))))}",
        "T-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(t))))}",
        "UFRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(u))))}",
        "SR-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(v))))}",
        "W-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(w))))}",
        "KP-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(x))))}",
        "KWR-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(y))))}",
        "STKPW-FRPBLGT": "{#Super_L(Control_L(Alt_L(Shift_L(z))))}",
        "1-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F1))))}",
        "2-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F2))))}",
        "3-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F3))))}",
        "4-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F4))))}",
        "12-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F5))))}",
        "23-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F6))))}",
        "34-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F7))))}",
        "123-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F8))))}",
        "234-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F9))))}",
        "14-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F10))))}",
        "13-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F11))))}",
        "24-6R7B8G9": "{#Super_L(Control_L(Alt_L(Shift_L(F12))))}",
        "STKPWHR-P": "{#Super_L(Control_L(Alt_L(Shift_L(up))))}",
        "STKPWHR-R": "{#Super_L(Control_L(Alt_L(Shift_L(left))))}",
        "STKPWHR-B": "{#Super_L(Control_L(Alt_L(Shift_L(down))))}",
        "STKPWHR-G": "{#Super_L(Control_L(Alt_L(Shift_L(right))))}",
        "STKPWHR-RPG": "{#Super_L(Control_L(Alt_L(Shift_L(page_up))))}",
        "STKPWHR-FBL": "{#Super_L(Control_L(Alt_L(Shift_L(page_down))))}",
        "STKPWHR-FPL": "{#Super_L(Control_L(Alt_L(Shift_L(home))))}",
        "STKPWHR-RBG": "{#Super_L(Control_L(Alt_L(Shift_L(end))))}",
        "STKPWHR-RB": "{#Super_L(Control_L(Alt_L(Shift_L(return))))}",
        "STKPWHR-F": "{#Super_L(Control_L(Alt_L(Shift_L(backspace))))}",
        "STKPWHR-L": "{#Super_L(Control_L(Alt_L(Shift_L(delete))))}",
        "STKPWHR-FR": "{#Super_L(Control_L(Alt_L(Shift_L(escape))))}",
        "STKPWHR-LG": "{#Super_L(Control_L(Alt_L(Shift_L(tab))))}",
        "STKPWHR-RP": "{#Super_L(Control_L(Alt_L(Shift_L(slash))))}",
        "STKPWHR-PG": "{#Super_L(Control_L(Alt_L(Shift_L(backslash))))}"
}

5.4. Links

6. Closing bracket

An empty entry is given because the last entry cannot include a comma.

Footnotes:

1

See the Plover GitHub wiki entry "Dictionary Format" for more details.

2

For example, the code blocks shown on this web page are directly used to generate the Plover dictionary. Further, this web page is itself generated using Emacs. All of this happens from a single source file. We could even go so far as to host this web page with Emacs if we wanted :)

3

Technically to a Lisp function.

4

"M" for "meta". The Meta key, similar to use as the Alt key, existed before the Alt key. When Emacs was first created, the Meta key was common and the notation stuck.

5

Dictionary definitions for Super are not provided for at this time. Emacs doesn't commonly require Super and its inclusion is considered low priority. Further, only right hand patterns are used. This is because there does not appear to be a need for left hand forms. For anyone interested, see notes.tar.gz for notes detailing new strokes, alternate strokes, and silly definitions for each modifier combination involving Super. Pull requests welcome.

6

I don't know precisely how a stroke corresponds to the characters or behavior on screen. A program like xev can be used to view what the computer see, however.

7

M-x in Emacs calls `execute-extended-command`. This command reads in a command name, its arguments, and then calls the command. Commands in Emacs are Lisp function names which are in turn symbols. Symbols can contain spaces, but typically don't. For example,

(defun name\ with\ spaces ()
  (interactive)
  (message "Called a function whose name has spaces"))

;; remove function
(unintern 'name\ with\ spaces)

The `execute-extended-command` tries to complete the command name when space is pressed. When there are no symbols whose name contain spaces, the completion resolves to a dash.

If Space Placement is "After Output", entering commands into `execute-extended-command` won't always work. To see why, consider `python-mode`, or PAOUE/THO-PB. PAOUE inserts either " pie" (Before Output) or "pie " (After Output). When a space is inserted before, Emacs tries to complete the command (the space) and shows all available commands. This is immediately replaced with the string "pie". What the user sees is simply "M-x pie". The second stroke does two backspaces and inserts "ython", resulting in the string "python", as expected. When a space is inserted after, the string "pie " is sent by the first stroke. The space tries to perform a complete and finds nothing, resulting in "pie". That is, Emacs has "M-x pie" without a space, yet Plover expects to see "M-x pie ". On the second stroke, Plover sends three backspaces (to account for the expected trailing space) and inserts "ython". Since Emacs only contains the three characters "pie", the result is "ython" and not "python".

8

Granted, nothing is really 'silly' about "miranda warning". It's simply uncommon outside of classrooms and courtrooms.

Author: Ahab

Created: 2022-11-03 Thu 18:07

Validate