This is a documentation for Cocoa Theory, a stenographic theory for writing English on the Ward Stone Ireland layout.
This document will seem very complicated to a lot of learners, but it is important to note that large portions of the text in this document have been dedicated to explaining very rare corner cases in the theory, most of which users will rarely encounter.
Hence, it should not be used as a primary learning resource. Users are still welcome to use this document as an additional reference document to look up on any additional details that may be missing in other resources.
Throughout the document, badges have been added to various topics to indicate their development progress. They are as follows:
- Cocoa Theory Specifications
- Design Objectives
- Fingerspelling
- Initials
- Medials (Vowels)
- Finals
- Syllable Splitting
- Edge Cases
- Common briefs
- Numbers
- Symbols
- Formatting
- Modifiers
- Orthographic System
- Phrasing System
Cocoa Theory is derived from Plover Theory, with heavy influences from Phoenix and Realwrite/Realtime, as well as theory ideas floating around on the Plover Discord. It is a mixed (phonetic-orthographic) theory with heavy use of orthographic disambiguation. It was initially created as a variant of Plover Theory to fix three major problems with the theory: Reliance on stress-based syllable dropping, lack of consistency in syllable splitting, and the overuse of disambiguation by asterisks. Since then, it has undergone enough changes to be considered an independent theory. The main design goals are:
- To provide a theory designed for everyday use in mind, rather than court reporting and captioning;
- to remove dependence on stress-based syllable dropping, as not all English speakers are capable of identifying stressed and unstressed syllables. This does not indicate the complete removal of stress-based syllable dropping, but merely makes it optional;
- to provide spelling-based disambiguation for all the major conflict-prone medials;
- to accomodate for short writing styles, including folding and phrasing, whilst not making it compulsory;
- to make the outlines of all words predictable, even if their pronunciation is unknown, using a systematic syllable splitting standard;
- to support British spellings using orthographic disambiguation;
- to reduce the amount of memorization as much as possible by reducing the reliance on special affix strokes, the number of mandatories, and frequency-based disambiguation.
There are a few technical goals that the theory tends to stick to when introducing new rules:
- Not to make Philly shifting compulsory; users are still free to implement them in their own writing if they like it, but it should not be necessary.
- Asterisks should only be used phonetically for finals.
Cocoa Theory is not an orthographic theory.
It is a mixed system, based partially on the General American accent, but with more leniency for other accents and alternative pronunciations. If the user's accent is generally mutually intelligible with American English, which covers most major English speaking regions as well as most English learners, then this thoery should work for them.
During the design process, the following points were considered:
- Non-rhotic accents: Not including R sounds would make the theory more unfriendly to other speakers; as such, speakers with non-rhotic accents should expect to include unprounounced R sounds in their writing, such as the R in "hour", "bar", "hear", etc. This includes most English (British), Welsh, Australian, New Zealand, and Singaporean/Malaysian accents, as well as some accents in India, Pakistan, and the American South.
- Syllable-timed/Mora-timed accents: There are both native speakers and learners who speak accents with reduced stress patterns or with no stressed/unstressed syllables. Much like many traditional theories, Cocoa Theory takes advantage of stress patterns to drop syllables to write shorter; this, however, is completely optional, and stress is not required for writing. This should make it much easier for East or Southeast Asian speakers, or native speakers of non-stress-timed languages such as French, Italian, or Spanish (just to list a few).
- Reduced vowels and schwas: Vowel reduction is not consistent across accents. Cocoa Theory attempts to provide the non-reduced outlines wherever possible, extrapolated based on spelling. For instance, "considerate" does not rhyme with "crate" due to the final syllable being a schwa, but there will be a dictionary entry that fits the prounuciation where they do rhyme.
However, if the user's accent or dialect deviates too much (to the point where vowel lexical sets fail to capture their accent), then they may run into a few obstacles with this theory. This does not mean that they should not use this theory - this merely means that they should expect to make a lot more changes to their personal dictionary than the average user. In other words, if their accent is "heavy" enough that other speakers from other regions may have difficulty understanding them, then they may have to use a lot more custom dictionary entries that fit your pronunciation.
Fingerspelling is done with the left hand, with the right hand in charge of spelling variants. The letters are as follows:
Letter | Chord | Letter | Chord |
---|---|---|---|
a | A |
n | TPH |
b | PW |
o | O |
c | KPW or KR |
p | P |
d | TK |
q | KW |
e | E |
r | R |
f | TP |
s | S |
g | TKPW |
t | T |
h | H |
u | U |
i | EU |
v | SR |
j | SKWR |
w | W |
k | K |
x | SKPH or KP |
l | HR |
y | KWR |
m | PH |
z | SKW |
The variants are as follows: (Subject to change)
Variant | Example | Chord |
---|---|---|
Lowercase | abc | * |
Uppercase | ABC | *P |
Lowercase stitching | a-b-c | -RBGZ |
Uppercase stitching | A-B-C | -FPLD |
Lowercase dotted | a.b.c. | -RBLS |
Uppercase dotted | A.B.C. | -RPGS |
Unused | *RBGZ |
|
Unused | *FPLD |
|
Unused | *RBLS |
|
Unused | *RPGS |
Initials in Cocoa Theory are written using the left bank keys (STKPWHR
). Whilst the vast majority of words can be written phonetically, many are written orthographically instead to resolve conflicts in what could be considered a mixed system. In general, however, we can expect silent letters to be ignored, unless specified in the following sections. For instance:
- "p" in "pneumatic":
TPHAOUPL/SWRAT/SWREUBG
(nuum-at-ik) - "w" in "answer":
APBS/SWRER
(ans-er)
Most rules are inherited from Plover Theory, but some chords have been changed to avoid conflicts. In situations where there is an orthographic disambiguation initial chord for a word that does not require conflict resolution, we offer both the phonetic and orthographic variants and leave it to the user to decide which to use.
These are all the initials that are written phonetically:
Final | Chord | Final | Chord |
---|---|---|---|
/b/ | PW |
/t/ | T |
/d/ | TK |
/v/ | SR |
/f/ | TP |
/w/ | W |
/ɡ/ | TKPW |
/j/ | KWR |
/h/ | H |
/z/ | SKW |
/dʒ/ | SKWR |
/ʃ/ | SH |
/k/ | K |
/tʃ/ | KH |
/l/ | HR |
/ʃɹ/ | SKHR |
/m/ | PH |
/θ/ | TH |
/n/ | TPH |
/ð/ | TH |
/p/ | P |
/ʒ/ | SKWR |
/kw/ | KW |
||
/ɹ/ | R |
||
/s/ | S |
Initial consonant clusters are built using the basic initial sounds, and in most instances can be chained together without breaking steno order. For instance:
- Initial /fl/:
TPHR
- Initial /bɹ/:
PWR
- Initial /skɹ/:
SKR
There are, however, instances where we are forced to break steno order to accomodate rare initial consonant clusters. We do this by stacking or using inversion; note that in the case of stacking, the individual sub-chords that are stacked together do not overlap. Note that "kn" is not considered a cluster since it is a single sound.
- Initial /θw/:
TWH
- Initial /nj/:
TKPWHR
In the case of glides, /j/ and /w/ in particular, whilst they can be represented sometimes with a stacked KWR
and W
respectively, if the glide is included as part of the vowel, such as AOU
/juː/, then they should not be stacked. For example, the first syllable of "music" is represented with PHAOUS
, not KPWHRAOUS
or KPWHRUS
.
Overlapped stacking is only used when there is no other choice, such as when a word begins with the consonant cluster in question and the first chord has to include the entire cluster.
- Initial /lm/, /ml/:
PHR
- Initial /vl/:
SHR
Some existing initials also have additional functions:
S-
can be used as a vowel wildcardW-
can be used for "V" soundsH-
can be used for "W" or "U" sounds whenW
is takenTPH-
can be used for "in-", "en-", "on-"HR-
can be used for "el-", "al-"SKPH-
can be used for "exc-"
These additional functions can be combined with inversion and stacking:
- Initial /ɡw/:
TKPWH
- Initial /bw/:
PWH
Some initials that include the /ʃ/ sound cannot be properly accomodated on the layout, and are represented by just the S-
key. However, when the option to stack consonants regardless of steno order is available, we stack the sounds instead:
- Initial /ʃl/:
SHR
- Initial /ʃm/:
SPH
- Initial /ʃt/:
STH
- Initial /ʃw/:
SWH
Note that this does not apply to qu-, which is stroked with KW
, not KWH
.
Whilst most initials are written phonetically, a few exceptions exist due to the need for disambiguation:
Initial | Chord | Remarks |
---|---|---|
h | H |
Only when silent |
c | KPW |
Only when pronounced as /s/ |
x | SKPH |
When pronounced as /s/ or /z/ |
wh | WH |
Used even in phonetic outlines; never just W . Note that some speakers do pronounce wh- differently from w- |
wr | WR |
Used even in phonetic outlines; never just R . Note that some speakers do pronounce wr- differently from r- |
tw | TW |
Only when pronounced as /t/. This is specifically for derivatives of "two". |
ch | KH |
Only when pronounced as /k/ or /ʃ/ |
sc | SKPW |
Only when pronounced as /s/ |
sch | SKH |
Only when pronounced as /ʃ/ |
kn | TKPH |
Only when pronounced as /n/ |
ph | TKP |
Only when pronounced as /f/ |
In cases where disambiguation is not necessary, such as "knife", both the phonetic (TPHAOEUF
) and the orthographic stroke (TKPHAOEUF
) should be provided, chosen by the user based on preference.
There are also many cases where we include the orthographic entry not for disambiguation, but to anticipate situations where the speaker actually pronounces these words based on how they are spelled, unaware of the exceptions in English orthography.
Note that initial gh- is written as TKPW
, not TKPWH
. The latter chord may be used for disambiguation if necessary, but I have not come across any situations where I have required it so far. Hence the following words are written with TKPW
:
- gherkin:
TKPWERBG/SWREUPB
, notTKPWHERBG/SWREUPB
- ghetto:
TKPWET/SWROE
, notTKPWHET/SWROE
Nevertheless, there isn't actually anything bad with the chord TKPWH
, so the user can add it for words starting with gh- if they so choose to.
These initials are either memorized or constructed from the principles listed previously, but they are mostly used in briefs rather than syllable-based outlines.
Initial | Pronunciations | Chord | Remarks |
---|---|---|---|
des, dis | /dɪs/ | STK |
|
exp, and, end | /ɪksp/, /ænd/, /ɛnd/ | SKP |
|
imp, emp | /ɪmp/, /ɛmp/ | STKPW |
|
int, ent | /ɪnt/, /ənt/, /ɛnt/, /ɑnt/ | SPW |
|
ext | /ɪkst/, /ɛkst/ | SKPW |
|
inf | /ɪnf/ | STKPH |
|
adv | /ædv/, /ədv/ | STKW |
|
inv | /ɪnv/ | STPHR |
|
ins, ens, inst | /ɪns/, /ɛns/, /ɑns/, /ɪnst/ | STPH |
|
rev, riv, rew, rw | /ɹəv/, /ɹɪv/, /ɹəw/, /ɹɪw/ | WR |
There are also two joiners, used to indicate the lack of an initial consonant sound. These are explained in the syllable splitting section.
- Generic initial joiner:
SWH
- Orthographic joiner:
KWH
Since KWH
is reserved as the orthographic joiner, we cannot use it for the chw- sound, present in words such as "factual" or "eventually". As mentioned previously, that sound uses the TW
chord instead - if necessary, this can be seen as an orthographic chord.
The letters "t" and "d" are often pronounced as /tʃ/ and /dʒ/, especially in the UK, such as in "Tuesday" /ˈt͡ʃuːzdeɪ/ or "during" /ˈdʒʊəɹɪŋ/. At the beginning of words, they are stroked orthographically, using T
or TK
:
- Tuesday:
TAO*UZ/SWRAEUFB
- during:
TKAOUR/-G
However, they can be written phonetically when they occur elsewhere. This should not be relied upon, and the dictionary will not include every entry, only the ones that are pronounced this way in General American accents:
- capture:
KAP/SKHUR
(kap-chur) orKAPT/SWRAOUR
(kapt-uur) orKAPT/SWRUR
(kapt-ur) - culture:
KUL/SKHUR
(kul-chur) orKULT/SWRAOUR
(kult-uur) orKULT/SWRUR
(kult-ur) - presumptuous:
PRES/SWRUFRP/SKHU/SWROUS
(pres-ump-chu-ous) orPRES/SWRUFRPT/SWOUS
(pres-umpt-uous)
The same letters "t" and "d" are also often pronounced as /ɾ/, like in "little" or "paddle". Due to syllable splitting, these usually do not happen in the initial, but in cases where they do, they are exclusively written orthographically as T
and TK
respectively.
Vowels are written using the thumb keys AOEU
. Vowels in English are a mess, so whilst the system has inherited most of the phonetic vowel chords from Plover Theory, it leans towards the orthographic side, with many orthographic disambiguators recommended for use even if there are no conflicts.
Many of these disambiguators overlap with final chords, especially -FB
and -PZ
. They will be mentioned briefly in this section, and will be explained again in the finals section.
The vowel system is rhotic, to avoid conflicts. For speakers who have a non-rhotic accent, it may be helpful to view it from an orthographic point of view.
If any vowel clusters are spelled exactly with the following sequences of letters, then they are stroked orthographically regardless of pronunciation:
Spelling | Chord |
---|---|
ai | AEU |
au | AU |
ae, ea | AE |
ee | EE |
oo, ao | AO |
oa | OE |
aou, oau | AOU |
ou | OU |
There are instances where we find these spellings in vowel clusters that would be considered as two syllables, such as the "oo" in coordination. In these cases, we can apply the orthographic overrides as usual, or split it into two syllables. Some examples include:
- "oo" in "coordination":
KAORD/SWREUPB/SWRAEUGS
orKOE/SWRORD/SWREUPB/SWRAEUGS
orKO/SWRORD/SWREUPB/SWRAEUGS
- "ea" in "reality":
RAEL/SWREUT/KWREU
orRAOE/SWRAL/SWREUT/KWREU
orRE/SWRAL/SWREUT/KWREU
There are also instances where we find these spellings as part of a longer string of vowels. We write them phonetically.
The precise definition of a "short" vowel in this context is any of the vowels listed below. Many of them are merged in many dialects. They are generally stroked based on spelling.
Due to all sorts of mergers and splits and vowel pronunciations being wildly different between different accents, even the fallback of many of these vowels are orthographic.
Lexical Set | Examples | Fallback |
---|---|---|
kit | ship SHEUP , myth PH*EUT |
EU |
dress | step STEP , ready RAED/KWREU |
E |
trap | bad PWAD , cab KAB |
A |
lot | stop STOP , job SKWROB |
Final vowel letter |
thought | thought THOUGT , swan SWAPB |
Final vowel letter |
strut | cup KUP , budge PWUPBLG |
U |
bath | staff STAF , dance TKAPBS |
A |
palm | balm PWAUPL , sergeant SERPBLG/SWRAEPBT |
Final vowel letter |
cloth | cough KOUF , broth PWRO*T |
Final vowel letter |
foot | put PUT , look HRAOBG |
U |
comma (schwa) | around AR/SWROUPBD , vodka SROD/SKA |
Final vowel letter |
Spellings of vowels are usually converted into steno like so:
Spelling | Chord | Remarks |
---|---|---|
ai | AEU |
Orthographic Override |
au | AU |
Orthographic Override |
ae, ea | AE |
Orthographic Override |
ea | AE |
Orthographic Override |
oo, ao | AO |
Orthographic Override |
oa | OE |
Orthographic Override |
aou, oau | AOU |
Orthographic Override |
ou | OU |
Orthographic Override |
a | A |
|
e | E |
|
i, y | EU |
|
o | O |
|
u | U |
|
w | AOU |
Only when used as a vowel; see below |
Some vowel sounds require us to write with spelling. In some cases, the letters "y" and "w" may be used to spell those vowels. In those cases, we use the chords EU
and AOU
to represent them respectively. For instance:
- "y" in myth:
PH*EUT
- "w" in crwth:
KRAO*UT
We will often find words that cannot be stroked by spelling, because the combination of letters used to represent the vowel is too rare to warrant a special chord. In this case, we stroke them phonetically, using the fallback column. For some of the vowels, we are required to take the rightmost vowel letter. Here are some examples of the fallback column in use:
- "ie" in "friend":
TPREPBD
- "ue" in "conquer":
KOFRPBG/SWRER
When the spelling of a word deviates too much from its spelling, we will also offer a phonetic outline, using the fallback chord associated with the vowel. For instance:
- "u" in "minute":
PHEUPB/SWREUT
- "u" in "busy":
PWEUS/KWREU
,PWEUZ/KWREU
- "o" in "women":
WEUPL/SWREPB
For the palm vowel specifically, whenever the vowel is spelled as "au", "al", or "aw", we use AU
instead of A
, as with the outline listed for "balm".
Long vowels are all vowels that aren't short, including diphthongs. All of them have a base chord, but since conflict rates are often high, they all have a list of associated disambiguators, each corresponding to a possible spelling of the vowel.
?
is a consonant wildcard. Note that orthographic overrides take priority.
Lexical Set | Base Chord | Disambiguators |
---|---|---|
fleece | AOE |
i EU , y EU , e?e AOEF |
face | AEU |
ei AE , ey EFB , ay AEUFB , a?e AEF |
goat | OE |
o O , ow OEFB , o?e OEF |
goose | AOU |
o O , ew AOUFB , u?e AOUF |
price | AOEU |
y AOEUFB , uy UFB , ye AOEUFB , aye AOEUFB , i?e AOEUF |
choice | OEU |
oy OEUFB |
mouth | OU |
ow OUFB |
If we encounter a long vowel with spelling that is not included in the list of disambiguators, we can safely stroke it using the base chord. For instance:
- "ai" in "maid":
PHAEUD
- "oe" in "roe":
ROE
Whenever we use AOU
, we can safely include glided Y sounds into the vowel, instead of deferring them to the initial or the previous chord:
- "iew" in "view":
SRAOUFB
- "u(t)e" in "mute":
PHAOUFT
Since many of the disambiguators include keys from the right bank, they can sometimes interfere with the final consonants in a given stroke. In cases where the keys do not overlap, we can safely include the entire disambiguator, even if steno order is broken:
- "ow" in "bowl":
PWOEFBL
- "ow" in "power":
POUFRB
orPOUFB/SWRER
- "a(t)e" in "rate":
RAEFT
- "a(th)e" in "bathe"
PWA*EFT
There are cases, however, where they overlap. In these cases, we can continue using the disambiguators, but without the right bank keys. For instance:
- "ow" in "down":
TKOUPB
- "aw" in "pawn":
PAUPB
- "a(v)e" in "pave":
PA*EF
- "a(f)e" in "safe":
SAEF
It is important to note that both phonetic and orthographic options will be available whenever possible, even when there are no conflicts to disambiguate.
Rhotic vowels generally follow the same rules as the two categories above, but with an additional -R
added at the back.
Lexical Set | Examples | Fallback |
---|---|---|
nurse | hurt HURT , term TERPL |
Final vowel letter |
start | heart HAERT , carve KAFRB |
AR |
north | short SHORT , war WAR |
Final vowel letter |
force | four TPOUR , spore SPOR |
Final vowel letter |
letter | meter PHAOET/SWRER , metre PHAOET/SWR-R |
Final vowel letter |
Note that "er" is stroked as ER
, but "re" (commonly used in British spelling) is stroked as just -R
. This allows us to write both American and British spellings.
Lexical Set | Base Chord | Disambiguators |
---|---|---|
near | AOER |
ir EUR , yr EUR , ere AOEFR |
square | AEUR |
are AEFR |
cure | AOUR |
ure AOUFR |
Naturally, the phonetic outlines will still be available for many of these words, and will be recommended when users are not used to this system.
The face (a), fleece (e), price (i), goat (o), and goose (u) vowels are often spelled with a single letter, followed by a group of consonants, then a silent "e". The orthographic disambiguators for these vowels include the -F
key, like so:
- base:
PWAEFS
- cede:
SAOEFD
- price:
PRAOEUFS
- prose:
PROEFS
- rude:
RAOUFD
Note that clusters containing multiple consonants can also be matched with the "~" wildcard.
However, there is one single exception to this rule - when used with -P
, this can conflict with any syllables ending with "-each" or "-oach", such as "teach"/"tape" or "coach"/"cope". Thus for /p/ specifically, we will stick to the base chord:
- tape:
TAEUP
- pipe:
PAOEUP
- cope:
KOEP
- dupe:
TKAOUP
Note that this pattern does not apply to other similar patterns with a silent "e". "praise", for instance, is not spelled with the "a~e" pattern because the core vowel is spelled with "ai", not just a single "a". Its outline is hence PRAEUS
, using the base vowel chord AEU
, rather than PRAEFS
or PRAEUFS
, influenced by the silent "e".
When words are conjugated or modified with affixes, the vowel strings that determine which chord or disambiguator we use may change. In these instances, we can choose to use either the original chord, or to ignore it and construct the outline based on the new modified spelling:
- bellies:
PWEL/SWREU/-S
orPWEL/KWREU/-S
- casing:
KAEFS/-G
orKAEUS/-G
When a vowel cluster contains a glide or a goose/fleece vowel that can be reduced to W
or KWR
on the left, but the glide cannot be inserted into the initial due to a lack of space, they can optionally be dropped altogether, like so:
- industrial:
EUPBD/SWR*US/SRAL
orEUPBD/SWR*US/SREU/SWRAL
Vowel clusters that contain a long vowel followed by a schwa can often be compressed into a single stroke by ignoring the schwa, instead of being split into two strokes. For instance:
- iron:
AOEURPB
- power:
POUFRB
When long vowels are written with a single letter, some users may find it difficult to use the actual long vowel chord rather than the single letter key/chord corresponding to the letter. Cocoa Theory tries to account for this specifically for the goat vowel by including both the orthographic and phonetic variants:
- "o" in "macho":
O
orOE
Another problem is when a word starts with an e-/de-/re-, which can either be pronounced as the fleece vowel, or as a reduced schwa. Again, both variants would be included:
- "e" in "ecology":
E
orAOE
- "de" in "demand":
TKE
orTKAOE
The OEU
chord is also sometimes used for one of two things:
-
To indicate that there is an additional -y after the current syllable, such as in "happy". Whilst Plover Theory also uses
AE
for this purpose, Cocoa only usesOEU
, and applies it to a much smaller selection of words. (TBC: Experiment with-DZ
for final -y, or some other pinky chord) -
As a wildcard, to provide an alternative to skeletal briefs.
These two uses should not be treated as consistent rules, but rather as briefing techniques.
Whilst finals are mostly stroked phonetically, there are too many orthographic finals that it would be odd to call it phonetic. With that in mind, due to the syllable splitting used in the theory, finals play an extremely important role in representing complex consonant clusters, much more complex than on the left bank (appropriate given that the right bank has more keys).
Still, similar to initials, we can expect most silent letters to be ignored, unless any of the following sections say otherwise. Also similar to initials, if there is an orthographic disambiguator available for a given final, but no conflict is present, both the phonetic and orthographic outlines should be offered.
These orthographic override finals apply whenever the spelling matches one of the endings specified below. They exist due to confusion about their exact pronunciation, or in the case of -x, for conflict resolution.
Ending | Chord | Remarks |
---|---|---|
mb | -FRB |
-FR as "m" |
mn | -FRPB |
-FR as "m" |
x | *BGS |
|
s | -S |
|
t | -T |
|
st, zt | *S |
|
sd, zd | *Z |
The letters "s" is often pronounced as a /z/ sound in the finals. This can be extremely confusing for many English speakers, even though it is second nature to some. To reduce confusion, whenever a final is spelled with an "s", there will be an outline for it that uses -S
. If it is pronounced as /z/ and there are no conflicts, then the -Z
outline would also be provided.
The "t" sound is similar - it may sometimes be pronounced as a /d/, but will always be stroked as -T
.
This merger does lead to new conflicts that need to be resolved; however, we will not use -S
and -Z
to resolve them, and will instead resort to other disambiguation methods:
Word | Plover | Cocoa |
---|---|---|
race | RAEUS |
RAEFS |
raise | RAEUZ |
RAEUS or RAEUZ |
brace | PWRAEUS |
PWRAEFS |
braise | PWRAEUZ |
PWRAEUS or PWRAEUZ |
Those familiar with English phonotactics will recognize a few sounds in the table below that don't go at the end of English syllables. They are included as finals as a side effect of greedy syllable splitting.
Final | Chord | Final | Chord |
---|---|---|---|
/b/ | -B |
/ɹ/ | -R |
/d/ | -D |
/v/ | *F |
/f/ | -F |
/w/ | -FB |
/ɡ/ | -G |
/z/ | -Z |
/h/ | -PZ |
/dʒ/ | -PBLG |
/k/ | -BG |
/ʃ/ | -RB |
/l/ | -L |
/tʃ/ | -FP |
/m/ | -PL |
/θ/ | *T* |
/n/ | -PB |
/ð/ | *T |
/p/ | -P |
/ŋ/ | -PBG |
Most consonant clusters that are composed with sequences of sounds from the chart above can also be similarly composed in steno by ordering the sounds in steno order.
Some clusters, however, need to be handled differently:
Cluster | Chord | Remarks |
---|---|---|
/kst/ or "xt" | -GT |
Optional |
/ksd/ or "xd" | -GD |
Optional |
/ldʒ/ | -LG |
|
/nk/, /ŋk/ | -FRPBG |
|
/ntʃ/ | -FRPB |
|
/ɹtʃ/ | -FRPB |
lunch/lurch conflict to be memorized |
/ltʃ/ | -LG |
|
/nʃ/ | -PBLGTS |
Optional |
/ɹʃ/ | -RLGTS |
Optional |
/lʃ/ | -LGTS |
Optional |
/ɹb/ | *RB |
Prevent conflicts with -sh |
/ɹv/ | -FRB |
|
/lk/ | *LG |
Optional |
/lp/ | -P |
/l/ is ignored. |
/lm/ | -PL |
/l/ is ignored. In many cases, the "l" is accounted for as part of the vowel, such as "calm" KAUPL |
When arranging chords in steno order, we can safely ignore asterisks. For instance, /ɹst/ is *RS
, since we can ignore the asterisk in *S
and consider *S
as a chord that comes after -R
.
In some instances, we cannot arrange the chords we need in steno order to completely represent a consonant cluster. Normally, this forces us to split the cluster into two, even if we are dealing with the last syllable of the word. However, in some cases, we can use inversion to reduce the total number of strokes. This is mostly optional.
Cluster | Final Syllable | Non-final Syllable | With Inversion |
---|---|---|---|
/ɹf/ | -R/SWR-F |
-R/STP... |
-FR |
/ɹw/ | -R/SWR-FB |
-R/SW... |
-FRB |
/wɹ/ | -FB/SWR-R |
-FB/SR... |
-FRB |
/lf/ | -L/SWR-F |
-L/STP... |
-FL |
/lv/ | -L/SWR*F |
-L/SR*... |
*FL |
/lm/ | -L/SWR-PL |
-L/SPH... |
-FRL |
/dθ/ | -D/SWR*T |
-D/STH... |
*TD |
/lb/ | -L/SWR-B |
-L/SPW... |
-BL |
/mf/ | -PL/SWR-F |
-PL/STP... |
-FPL |
There are two inversion cases that are treated differently to avoid conflicts:
Cluster | Without Inversion | With Inversion |
---|---|---|
tle | -T/SWR-L |
*LT |
dle | -D/SWR-L |
*LD |
There are two cases where the pronunciation of a final is not enough to determine what chord to use:
Final | Remarks |
---|---|
/ʒ/ | If spelled with any sequence containing "s", use -RB . Otherwise, use -PBLG . |
/ks/ | If spelled as "x", use *BGS . Otherwise, treat it as /k/ + /s/ and write -BGS . |
There is also a small selection of orthographic disambiguators. -FB
has already been covered in the vowels section, but they will be mentioned again here:
Final | Disambiguator Chord |
---|---|
Silent h, gh | -PZ |
-ght | -GT |
w, y | -FB (For details on usage, see vowels.) |
For instance:
- hi:
HAOEU
- high:
HAOEUPZ
- lite:
HRAOEUFT
- light:
HRAOEUGT
As stated before, the letters "t" and "d" are often pronounced as /tʃ/ and /dʒ/. In these cases, they should be stroked orthographically, as it can be rather difficult to predict when such pronunciations occur. However, they can be stroked phonetically sometimes, based on the General American accent:
- nature:
NAEUT/SWRAOUR
orNAEUT/SWRUR
orNAEUFP/SWRAOUR
orNAEUFP/SWRUR
- graduate (verb):
TKPWRAD/SWAEFT
orTKPWRAPBLG/SWAEFT
Users are recommended to either use the orthographic outlines, or to define their own phonetic outlines to fill in the gaps of the dictionary based on their personal preferences.
There are a few folded suffixes supported by Plover:
Suffixes | Chords | Remarks |
---|---|---|
ing | -G |
When briefing, we can use -DZ when -G is not available. |
d, ed | -D |
When briefing, we can use -TD for "-ded". |
s, es | -S , -Z |
Depends on which one is easier to press (-TS vs -DZ ) |
It is generally recommended to write these suffixes separately to avoid conflicts, but with sufficient familiarity with one's own dictionary, they can be folded.
Additionally, there are a few suffixes that can be "folded", but must be defined explicitly in the dictionary. They are optional and mostly used in briefs.
Suffixes | Chords | Remarks |
---|---|---|
re, er | -R |
Conflict-prone, use with caution |
al, ly | -L |
Conflict-prone, use with caution |
In the case of "al" or "ly", if -L
is not available, the left bank chord HR
can be used instead, even if it means overlapping chords on the left bank. For instance:
- finally:
TPHRAOEUPBL
- normally:
TPHROFRL
In some cases, we need to write the letter "s" before another consonant; this is made difficult by the fact that the -S
key is near the end of steno order. In these cases, we can use -F
to represent "s" instead. Here are some examples:
Cluster | Chord |
---|---|
"s" + /p/ | -FP |
"s" + /k/ | -FBG |
"s" + /m/ | -FPL |
"s" + /l/ | -FL |
Note that "st" is not -FT
, but *S
. This is to avoid conflicts.
By adding an asterisk, we can represent the letter "z" as well, though this is much less common:
Cluster | Chord |
---|---|
"z" + /p/ | *FP |
"z" + /k/ | *FBG |
"z" + /m/ | *FPL |
"z" + /l/ | *FL |
Another use case of -F
is for the "-sing" final, where we need to combine a final "s" with a folded "-ing" suffix. Instead of using -GS
, we can use -FG
instead. This, however, is not encouraged, due to the increased conflict rates. Beginners are still recommended to write -G
as a separate stroke, unless they are familiar enough with their own dictionary to know when -FG
will give them the right output.
Similar to how -F
can represent "s", we can use -FR
to represent the /m/ sound whenever we cannot represent a cluster that contains the sound properly using steno order without overlapping. For instance:
Cluster | Chord | Remarks |
---|---|---|
/mp/ | -FRP |
|
/mk/ | -FRBG |
|
/mn/ | -FRPB |
|
/ml/ | -FRL |
|
/mb/ | -FRB |
There are instances where the "b" in "mb" is silent, but this can be difficult to predict. Hence -FRB is used to represent "mb" in all instances as an orthographic override, rather than a phonetic chord. |
For convenience, the asterisk in *F
used to represent /v/ can be dropped whenever there are no conflicts. For instance:
- rave:
RAEF
orRA*EF
- save:
SA*EF
, but notSAEF
due to conflict with "safe"
This can also apply to instances where *F
is used to represent "z":
- freezer:
TPRAOEFR
orTPRAO*EFR
- razer:
RA*EUFR
, but notRAEUFR
due to conflict with "racer"
There are also a few finals that represent an entire syllable; they are used in write-outs and should be taught fairly early on, but are optional.
Final | Chord | Syllable Replacement | Remarks |
---|---|---|---|
/bəl/ | -BL |
Yes | |
/pəl/ | -PL |
Yes | |
/fəl/, /fuːl/ | -FL |
Yes | |
/vəl/, /zəl/ | *FL |
- | Subject to asterisk dropping. |
/təl/ | *LT |
- | See section above on Final Inversions. |
/dəl/ | *LD |
- | Same as above. |
/fəɹ/, /ðəɹ/ | -FR |
- | |
/vəɹ/ | *FR |
- | Subject to V asterisk dropping. |
/ʒəɹ/, /dʒəɹ/ | *FR |
- | Asterisk cannot be dropped. (TBC) |
/mənt/ | -PLT |
Yes | |
/nəs/, /nɪs/ | -PBS |
Yes | |
/ʃən/, /ʒən/, /dʒən/ | -GS |
Yes | |
/nʃən/, /neɪʃən/ | -PBGS |
- | |
/kʃən/, /keɪʃən/ | -BGS |
- | |
/lʃən/, /luːʃən/, /luːʒən/ | -LGS |
- | |
/ŋkʃən/ | -FRPBGS |
- | |
/ʃəl/, /ʒəl/ | -RBL |
Yes | |
/ʃəs/, /ʒəs/ | -RBS |
Yes |
For the finals above that have been labelled "Yes" under the Syllable Replacement column, that means that in cases where we need to represent the syllable as a whole chord in a write-out outline, we can use the final along with the joiner SWR
to replace the conventional syllable stroke. For instance:
- digestion:
TKAOEUPBLG/SWR*ES/SWR-GS
(also.../SH*OPB
) - wonderful:
WOPBD/SWRER/SWR-FL
(also.../STPUL
)
Syllable splitting refers to how multi-syllable words are split into sequences of strokes. By providing a single standard for splitting syllables, we can make outlines more predictable whilst reducing the dictionary size needed.
Cocoa Theory chooses to use right greedy splitting, where each stroke tries to "consume" as many consonants to its right as "greedily" as possible. This comes with a few constraints:
- Final sounds cannot overlap
- Final sounds cannot break steno order; as mentioned before, asterisks are not considered when we talk about steno order.
Any consonants that fail to be grouped to the nearest vowels on their left will instead be grouped to the right; in cases where it cannot be grouped to the right, these consonants will constitute their own separate stroke, with the sounds being placed on the right.
If a non-starting syllable has no initials, we use the left joiner chord SWR
to indicate that it should attach to the previous output. However, if a syllable does have initials, then we have to modify the left bank chord like so:
- If the left bank chord is
KWR
, we do not modify it. - If the left bank chord does not contain
S-
, we addS-
. For example, the "rum" in "fulcrum" isSRUM
, with theS-
added to indicate that it should attach to the left; the full outline would thus beTP*ULG/SRUM
. - If the left bank chord already contains
S-
, we add*
. For example, the "ship" in "hardship" isSH*EUP
, with the asterisk added to indicate that it should attach to the left; the full outline would thus beHARD/SH*EUP
. Note that this does not apply to just "s", but any left bank chord that containsS-
. If the chord already contains an asterisk due to the right side, we can keep using the same asterisked stroke.
Right greedy splitting may seem unnatural to some on their first impression. With sufficient practice, however, it should become second nature. The advantage of right greedy splitting is that many of the split syllables tend not to be individual words themselves, allowing us to greatly reduce the number of boundary issues present in the theory.
There are clusters or partial clusters that some users may find difficult to divide purely greedily; there is thus some leniency in the way they are divided:
Cluster | Greedy | Alternatives |
---|---|---|
/stɹ/ | ...*S/SR... |
...S/STR... |
/kstɹ/ (Spelled with x) | ...GT/SR... |
...*BGS/STR... |
/tɹ/ | ...T/SR... |
.../STR... |
/dɹ/ | ...D/SR... |
.../STKR... |
When the syllable starts with /j/ or /i/, we can use the KWR
chord to indicate it; similarly, when a syllable starts with /w/, /u/, or /ʊ/, we can use the W
key. However, there are cases where a user might try to insert these initials even though they have already been represented by the previous stroke. Whilst they are free to add such outlines, they are not part of the main theory:
- altruistic:
ALT/SRAOU/SWR*EUS/SWREUBG
(alt-ruu-ist-ic, not alt-ruu-wist-ic) - piano:
PEU/SWRAPB/SWROE
(pi-an-oe, not pi-yan-noe)
Users who wish to take advantage of syllable or stroke dropping may do so, even though they are often based on stress patterns and thus are optional. It is important to still keep using the additional S-
where applicable to indicate attached strokes to avoid boundary errors.
For words that have 2-stroke write-outs, no strokes can be dropped.
For words that have 3-stroke write-outs, we can drop the centre stroke after giving any of its finals to the initial of the third stroke, if there is space. Note that 3-stroke write-outs do not necessarily correspond to 3-syllable words. Some examples include:
- similar:
SEUPL/SWREUL/SWRAR
→SEUPL/SHRAR
- preposition:
PREP/SWROS/SWREUGS
→PREP/S*EUGS
- filament:
TPEUL/SWRAPL/SWREPBT
→TPEUL/SWR-PLT
For words that have write-outs with more strokes, syllable dropping is based on stress. Some of these entries will be included in the dictionary, but there are currently no plans to include these write-outs for rarer words.
- similarly:
SEUPL/SWREUL/SWRARL/KWREU
→SEUPL/SHRARL/KWREU
- prepositional:
PREP/SWROS/SWREUGS/SWRAL
→PREP/S*EUGS/SWRAL
- hyperbolical:
HAOEUP/SWR*ERB/SWROL/SWREUBG/SWRAL
→HAOEUP/SPWOL/SKAL
Consonant greedy is an alternative to syllable dropping that reduces the number of strokes per word, without relying on stress. This is accomplished by attempting to squeeze as many consonants or consonant clusters into each stroke as possible, ignoring the vowels between strokes or between consonants on the same side of a stroke, and ignoring any final consonants if the stroke can't accomodate more and the following stroke cannot include it in its initial. For instance:
- similarly:
SEUPL/SWREUL/SWRARL/KWREU
→SPHEUL/SHREU
(smil-ly) - prepositional:
PREP/SWROS/SWREUGS/SWRAL
→PREPS/SHO*PBL
- hyperbolical:
HAOEUP/SWR*ERB/SWROL/SWREUBG/SWRAL
→HAOEUP/SPW*ERBLG/SWRAL
In some cases, after putting as many consonants on the left, we are left with no vowels for the thumbs because the splitting point is immediately followed by another consonant. When this occurs, we simply shift the minimal amount of consonants from the left to the right so that we can have a vowel on the thumbs. If the vowel is represented by a no-key chord, that's still okay. For instance:
- cartography:
KR...
doesn't work, soKART/STKPWRAF/KWREU
To reduce the number of strokes needed for each word even further, we can make use of the inversions and folds introduced in the previous sections, as well as the -FR
as M technique. For example:
- similarly:
SPHREURL
- intricately:
SPWREUBLGT
The "-y" suffix is written using KWREU
(unless pronounced as the "price" vowel) and needs to be memorized explicitly. It also applies to cases where "y" is immediately followed by a final. Here are a few examples of it being used:
- happy:
HAP/KWREU
- happily:
HAP/SWREUL/KWREU
- methyl:
PH*ET/KWREUL
When it is pronounced as the price vowel, we either stroke it phonetically or use the disambiguator:
- rely:
REL/SWRAOEUFB
,REL/SWRAOEU
- deny:
TKEPB/SWRAOEUFB
,TKEPB/SWRAOEU
This only applies when there are no initials, and the only vowel is "y" itself. If there are initials, the suffix would be written with the -y represented phonetically as EU
.
Whilst this usually occurs at the end of words, it can also occur in the middle of words, which the user may not be used to due to its relative rarity. As such, these words are usually supplemented with outlines where SWREU
is used instead. For example:
- anonymous:
APB/SWROPB/SWREUPL/SWROUS
orAPB/SWROPB/KWREUPL/SWROUS
- analytics:
APB/SWRAL/SWREUT/SWREUBGS
orAPB/SWRAL/KWREUT/SWREUBGS
French loanwords often come with silent letters at the end; they can either be ignored in phonetic outlines, or included as part of orthographic outlines.
Ending | Pronunciation | Full Orthographic | Standard | Phonetic |
---|---|---|---|---|
ailles | /aɪ/ | AEUS |
AEU |
AOEU |
ais | /eɪ/ | AEUS |
AEU |
AEU |
ait | /eɪ/ | AEUT |
AEU |
AEU |
eaux | /oʊ/ | O*EBGS |
OE |
OE |
er | /eɪ/ | ER |
AEU |
AEU |
et | /eɪ/ | ET |
AEU |
AEU |
ez | /eɪ/ | EZ |
AEU |
AEU |
ieux | /juː/ | AO*UBGS |
AOU |
AOU |
ioux | /juː/ | O*UBGS |
OU |
AOU |
is | /i/ | EUS |
EU |
EU |
ois | /wɑ/ | OEUS |
WA or ...AOU/SWRA |
|
oix | /wɑ/ | O*EUBGS |
WA or ...AOU/SWRA |
|
oix | /ɔɪ/ | O*EUBGS |
WA or ...AOU/SWRA |
OEU |
ot | /oʊ/ | OT |
OE |
OE |
oup | /uː/ | OUP |
OU |
AOU |
ous | /uː/ | OUS |
OU |
AOU |
oux | /uː/ | O*UBGS |
OU |
AOU |
This is by no means an exhaustive list, but outlines for such words generally follow either their spelling or purely phonetically. Alternatively, we can also write the vowel orthographically, but drop the silent letter at the end.
The regular -S
stroke will not work properly on words with irregular Greek or Latin plurals. Instead, they are stroked as if the plural form is a separate word. This is such that in cases where both the irregular and regular plurals are accepted, they can both be stroked in a predictable manner.
Singular | Plural | Origin | Examples |
---|---|---|---|
a | ae | Latin 1st Declension | larva HRAFRB/SWRA , larvae HRAFRB/SWRAE |
us | i | Latin 2nd Declension Masc. | radius RAEUD/KWRUS , radii RAEUD/SWREU/SWRAOEU or RAEUD/KWRAOEU |
um | a | Latin 2nd Declension Neut. | minimum PHEUPB/SWREUPL/SWRUPL , minima PHEUPB/SWREUPL/SWRA |
ex | ices | Latin 3rd Declension | vertex SRERT/SWR*EBGS , vertices SRERT/SWREUS/SWRAOES |
ix | ices | Latin 3rd Declension | matrix PHAEUT/SR*EUBGS , matrices PHAEUT/SREUS/SWRAOES |
is | es | Latin 3rd Declension | axis A*BGS/SWREUS , axes A*BGS/SWRAOES |
ur | ora | Latin 3rd Declension | femur TPAOEPL/SWRUR , femora TPAOEPL/SWROR/SWRA |
us | ora | Latin 3rd Declension | corpus KORP/SWRUS , corpora KORP/SWROR/SWRA |
us | era | Latin 3rd Declension | genus SKWRAOEPB/SWRUS , genera SKWRAOEPB/SWRER/SWRA |
on | a | Greek 2nd Declension Neut. | criterion KRAOEUT/SWRAOER/KWROPB , criteria KRAOEUT/SWRAOER/KWRA |
a | ata | Greek 3rd Declension Neut. | stoma STOEPL/SWRA , stomata STOEPL/SWRAT/SWRA |
us | odes | Greek 3rd Declension Masc./Fem. | octopus OBGT/SWROP/SWRUS , octopodes OBGT/SWROP/SWROEFDZ |
Briefs refer to outlines that do not strictly follow all the core rules listed before. Groups of briefs may still have internally consistent patterns, but they would still have to be explicitly memorized.
Here is a list of briefs for the most common words. Mandatories are generally avoided, but for the most common words, their briefs are still recommended over their rule-based outlines such that phrasing is made simpler.
Word | Chord | Mandatory | Remarks |
---|---|---|---|
the | -T |
Yes | THE is assigned to "they" |
be | -B |
Yes | PWE is currently reserved for the "be-" prefix. |
of | -F |
Yes | OF is assigned to "off" |
and | SKP |
APBD also works, but the brief is always recommended. |
|
a | A |
AEU also works. |
|
is | S |
Yes | |
are | R or -R |
Yes | |
was | -FS |
WAS also works and is taught first. -FS is mostly used in phrasing. |
|
were | WR or -RP |
Yes | -RP is mostly used in phrasing. |
in | TPH |
Yes | |
this | TH |
THEUS also works, but the brief is recommended. |
|
that | THA |
Yes | THAT is assigned to "that the". |
those | THOS |
THOZ and THOEZ also work. |
|
these | THES |
THEZ and THAOEZ also work. |
|
have | SR |
HA*F also works. |
|
I | EU |
Yes | |
you | U |
Yes | |
it | T- |
||
it's | T-S |
"its" is EUTS , "it is" is T*S . |
|
they | THE |
THEFB also works, but the brief is recommended. |
|
for | TP-R |
Yes | TPOR is assigned to "fore" |
with | W |
W*EUT also works, but the brief is recommended. |
|
without | WOUT |
W*EUT/SWROUT also works. |
|
did | TK |
||
doing | TKAOG |
TKOG is assigned to "dog". |
|
but | TPW |
PWUT also works. "butt" is PW*UT or PWUT/SWR-T . |
|
by | PW |
Yes | PWAOEU is "bi" and PWAOEUFB is "buy". |
from | TPR |
TPROPL also works, but the brief is recommended. |
|
will | HR |
WEUL also works, but the brief is recommended. |
|
would | WO |
WOULD also works, but the brief is recommended. |
|
can | K |
KAPB also works, but is more commonly used in contexts such as "metal can". |
|
could | KO |
KOULD also works, but the brief is recommended. |
|
should | SHO |
SHOULD also works, but the brief is recommended. |
|
my | PHEU |
PHAOEUFB also works, but the brief is recommended. |
|
one | WUPB |
A weird quirk of the English language. Should be memorized along with "once" WUPBS . |
|
there | TH-R |
Yes | See "their" and "they're" below. |
their | THAEUR or THAER |
See surrounding entries for "there" and "they're". | |
they're | THER |
Yes | See "there" and "their" above. |
what | WHA |
Yes | WHAT is assigned to "what the". |
which | WEU |
WHEUFP is the rule-based outline; WEUFP is "witch". |
|
when | WH |
WHEPB also works, but the brief is recommended. |
|
whether | WHR |
WH*ET/SWRER also works. |
|
why | KWR |
WHAOEUFB also works, but the brief is recommended. |
|
if | TP |
Yes | |
just | SKWR |
SKWR*US also works, but the brief is recommended. |
|
into | TPHAO |
Inherited from Plover. | |
go | TKPW |
TKPWO also works. |
|
good | TKPW-D |
TKPWAOD also works. |
|
some | SPH |
SOPL also works. |
|
other | OER |
"o'er" is O*ER and is a mandatory. |
|
only | OPBL |
||
over | OEFR |
||
because | PWAU |
While some other theories use PWAUS , the -S has been removed here such that phrase briefs such as PWAUF for "because of" would fit steno order. |
|
away | WAU |
Completely arbitrary. AFB/SWRAEUFB also works. |
|
about | P |
"n't" is attached with -PBT
, and "'ve" is attached with *F
. For instance:
- didn't:
TK-PBT
- would've:
WO*F
Cocoa Theory uses the right hand numpad system for numbers. Digits are entered like so:
Digit | Chord | Digit | Chord | Digit | Chord |
---|---|---|---|---|---|
7 | #-F |
8 | #-P |
9 | #-L |
4 | #-FR |
5 | #-PB |
6 | #-LG |
1 | #-R |
2 | #-B |
3 | #-G |
0 | #E |
00 | #U |
000 | #EU |
While numbers are usually entered digit-by-digit, we can add one to three zeros by using the EU
keys:
- 40:
#EFR
- 200:
#UB
- 8000:
#EUP
We can write 2 to 3 digit numbers that don't end with 0 if they are on different columns and follow steno order from left to right. For example:
- 23:
#-BG
- 489:
#-FRPL
- 12600:
#URBLG
We can also add an additional digit 5 by including the -S
key, like so:
- 65:
#-LGS
- 835:
#-PGS
- 1550:
#ERPBS
These additions will always come before the zeroes represented by the thumb keys.
There are also these additional modifiers, which change how the output is formatted:
Modifier | Key/Chord | Example | On its own |
---|---|---|---|
Ordinal | -T |
3rd: #-GT , 25th: #-BTS |
. (Point separator) |
Plural | -Z |
80s: #EPZ , 90s: #ELZ |
, (Comma separator) |
These modifiers are not stackable.
Cocoa Theory has its own system for symbols, but it was also made to be compatible with Emily's Symbols should the user choose to use that.
Most punctuation is done with KW
on the right and either a phonetic or shape-based memorization hook on the thumb keys and right bank keys.
Punctuation | Description | Chord |
---|---|---|
.␣ | Full Stop / Period | -FPLT or TP-PL |
. | Decimal Point | #-T or P-P |
,␣ | Comma | -RBGS or KW-BG |
, | Decimal Comma | #-S or W-B |
?␣ | Question Mark | KW-FPG or KW-PL |
!␣ | Exclamation Mark | KW-PB or TP-BG |
:␣ | Colon | KWUF |
;␣ | Semicolon | KWEUF |
' | Apostrophe | KW-F |
␣` | Backtick | KW-PG |
␣' | Opening Single Quote | KW-P |
'␣ | Closing Single Quote | KW-L |
␣" | Opening Double Quote | KW-FP |
"␣ | Closing Double Quote | KW-LT |
␣` | Opening Backtick | KW-FB |
`␣ | Closing Backtick | KW-LS |
␣( | Opening Parenthesis | KWURP |
)␣ | Closing Parenthesis | KWUPG |
␣[ | Opening Bracket | KWUFP |
]␣ | Closing Bracket | KWUPL |
␣{ | Opening Brace | KWURPB |
}␣ | Closing Brace | KWUPBG |
/ | Forward Slash | KW-RL |
\ | Backslash | KW-FG |
* | Asterisk | KW-PBLG |
@ | At | KWAT |
␣-␣ | Hyphen | KW-RBG |
- | Joining Hyphen | KW-FPL |
~␣ | Tilde | KW-RPL |
^ | Caret | KW-RPG |
...␣ | Ellipsis | KW-BS |
␣&␣ | Ampersand | KW-FRPBG or SKP* |
Diacritics are not the priority right now and will be handled in the future using a plugin.
Formatting control is done using a collection of "half-strokes". These are a work-in-progress.
Description | Chord |
---|---|
Cycle Alternatives | -RB |
Insert Space | SP |
Suppress Space | SWR |
Retro Insert Space | SP-D |
Retro Suppress Space | SWR* |
All Uppercase Next | -PBLG |
Capitalize Next | -PL |
Lowercase Next | -BG |
Proper Noun Next | -P |
Retro Capitalize | -PLD |
Retro Lowercase | -BGD |
Retro Proper Noun | -PD |
Orthographic | -FP |
Orthographic Capitalize | -FPL |
Retro Orthographic | -FPD |
Steno Correction | * |
Delete Word | SW |
Return and Capitalize | R-R |
Return and Keep Case | R-RB |
A slightly modified version of Abby's left hand modifiers is used. Main modifier keys remain unchanged:
Modifier | Stroke | Remarks |
---|---|---|
Control | KHR |
|
Alt | THRA |
|
Shift | SH |
|
Super | KPWR |
|
Shift + Super | SKPWHR |
|
Alt + Super | TKPWHRA |
|
Alt + Shift | STHRA |
|
Alt + Super + Shift | STKPWHRA |
|
Ctrl + Super | KPWHR |
|
Ctrl + Shift | SKHR |
|
Ctrl + Shift + Super | SKPWHRO |
Extra O |
Ctrl + Alt | TKHRA |
|
Ctrl + Alt + Super | TKPWHRAO |
Extra O |
Ctrl + Alt + Shift | STKHRA |
|
Ctrl + Alt + Shift + Super | STKPWHR |
Extra O |
Letters follow the Fingerspelling Alphabet, with the exception of the following:
Letter | Stroke | Remarks |
---|---|---|
e | SK |
|
i | SKR |
|
u | WR |
|
x | SKPH |
KP is not included as it is used for cancelling. |
Numbers are done with AO
held down, and holding down the asterisk is used when we need numpad keys rather than the numrow. Numbers are arranged in a numpad pattern rather than using binary, and S
is added for the function row:
Number | Stroke | Number | Stroke | Number | Stroke |
---|---|---|---|---|---|
7 | TAO |
8 | PAO |
9 | HAO |
4 | TKAO |
5 | PWAO |
6 | HRAO |
1 | KAO |
2 | WAO |
3 | RAO |
0 | AO |
||||
F10 | SAO |
F11 | SKWAO |
F12 | STPAO |
F7 | STAO |
F8 | SPAO |
F9 | SHAO |
F4 | STKAO |
F5 | SPWAO |
F6 | SHRAO |
F1 | SKAO |
F2 | SWAO |
F3 | SRAO |
All other keys remain the same as the original:
Key | Stroke |
---|---|
Period (.) | PR |
Comma (,) | KPH |
Slash (/) | SHR |
Backslash () | SPWHR |
Semicolon (;) | SKHR |
Apostrophe (Quote) (') | KWO |
Opening (Left) Bracket ([) | PWHR |
CLosing (Right) Bracket (]) | PWR |
Hyphen (Dash) (-) | TKH |
Equals (=) | KWA |
Grave (`) | TKPWR |
Up | PA |
Down | WA |
Left | KA |
Right | RA |
Page Up | PA* |
Page Down | WA* |
Home | KA* |
End | RA* |
Caps Lock | KHR* |
Scroll Lock | SKHR* |
Num Lock | TPH* |
Space | SP |
Return (Enter) | SPWR |
Tab | TPW |
Backspace | SPW |
Delete | TKHR |
Escape | SKA |
Insert | STPH |
Menu | PH* |
Print Screen | SKPR |
No Key | TPHO |
To cancel the modifier after pressing the modifier key, use KP
.
Cocoa is designed to be compatible with Emily's Modifiers, but they would have to be adapted slightly to the new fingerspelling alphabet.
The orthographic system is a system within Cocoa Theory intended to be an intermediate fallback for words that aren't in the dictionary, such that users can write unknown or foreign words quickly without resorting to fingerspelling. It is entirely orthographic, where chords are determined entirely based on spelling. For example:
"Tagalog ay isa sa mga pinakaginagamit na wika ng Pilipinas"
-FPL/TAG/KWHAL/KWHOG . -FP/ABZ . EUS/KWHA . -FP/SA . PH-G/KWHA . PEUPB/KWHALG/KWHAG/KWHEUPB/KWHAG/KWHAPL/KWHEUT . -FP/TPHA . WEULG/KWHA . -FP/-PBG . -FPL/PEUL/KWHEUP/KWHEUPB/KWHAS
Many of the chords in the orthographic system differ from the main theory, since we have to create different chords for groups of letters that would otherwise be pronounced the same way (thus require no distinction phonetically).
Due to the large output space of the orthographic system, it can only be realistically implemented as a programmatic dictionary; it is thus only available on Plover. Orthographic words must either have the KWH
chord, or alternatively use one of the orthographic formatting chords - -FP
, -FPL
, or -FPD
.
Since the system also uses the number key, it is expected to conflict with both numbers and the phrasing system. In these cases, it is better to use the orthographic system formatting strokes to avoid boundary issues with numbers and phrases.
Initials mostly resemble their phonetic counterparts. The largest exception is the linker, which is replaced with KWH
- it is used to link the current stroke to the previous output, when there is no initial. When there is an initial, we add the number key #
instead. Note that whenever a word is stroked using the orthographic system without ever using the KWH
linker, we must use an orthographic formatting stroke at the front (-PL
or -FPL
) or back (-PLD
) to indicate it.
Initial | Chord | Derivatives | Remarks |
---|---|---|---|
(Linker) | KWH |
We can use #KWH to double the previous letter. |
|
b | PW |
br PWR , bl PWHR , bh PWH |
|
c | KPW |
ch KPWH , cr KPWR , cl KPWHR |
|
chl | KWHR |
Conflicts with the much rarer initial "ql" | |
chr | KHR |
Conflicts with the much rarer initial "kl" | |
cz | SKP |
||
d | TK |
dr TKR , dh TKH , dw TKW |
|
f | TP |
fr TPR |
|
fl | TPHR |
Explicit entry added to avoid confusion with "nr". | |
ph | TKP |
phr TKPR |
|
phl | TKPHR |
Explicit entry added to avoid confusion with "knr" | |
g | TKPW |
gr TKPWR , gl TKPWHR , gh TKPWH |
|
gn | STKPW |
||
h | H |
||
j | SKWR |
||
k | K |
kr KR , kh KH |
|
kl | KP |
||
kn | TKPH |
||
l | HR |
||
(Double) + l | SKPHR |
Doubles previous letter and adds "l" | |
m | PH |
||
n | TPH |
||
p | P |
pr PR |
|
pl | PHR |
Explicit entry added to avoid confusion with "mr". | |
pn | TPW |
||
ps | STP |
||
pt | TWR |
||
q | KW |
||
r | R |
||
(Double) + r | Doubles previous letter and adds "r" | ||
rh | KPR |
||
s | S |
st ST , sp SP , sh SH , sc SKPW , str STR , sl SHR , sw SW , sn STPH , sk SK , scr SKPWR , sm SPH , sch SKPWH , spl SPHR , spr SPR , scl SKPWHR , skr SKR |
|
shr | SKHR |
Conflicts with sl, which has been assigned to SHR . |
|
sq | STK |
Conflicts with z, which has been assigned to SKW . |
|
sph | STKP |
Explicit entry so that it won't be misinterpreted as "sqh". | |
t | T |
tr TR , th TH , tw TW |
|
thr | THR |
Conflicts with tl | |
thw | TWH |
||
ts | STW |
||
tz | STKW |
||
v | SR |
||
w | W |
wh WH , wr WR |
|
x | SKPH |
||
y | KWR |
||
z | SKW |
Not all initials are covered by the list below, mostly because they are too rare to justify having their own chord. In those cases, we can simply use the final to write the initial in a single stroke:
- mn:
PH-PB
- ng:
TPH-G
- scht:
SKPWH-T
To access the variant, add the asterisk *
to the chord.
Chord | Medial | Variant | Remarks |
---|---|---|---|
(Empty) | (Empty) | Reserved | |
A |
a | ia | Asterisk adds "i" |
O |
o | io | Asterisk adds "i" |
AO |
oo | ao | |
E |
e | ie | Asterisk adds "i" |
AE |
ea | ae | |
OE |
oa | oe | |
AOE |
ee | ui | |
U |
u | iu | Asterisk adds "i" |
AU |
au | eou | |
OU |
ou | iou | Asterisk adds "i" |
AOU |
ue | eu | |
EU |
i | y | |
AEU |
ai | ua | |
OEU |
oi | uo | |
AOEU |
ei | eo |
Here are some examples of the medials in use:
- cautious:
KPWAUT/KWHO*US
- keine:
KAO*EUPB/KWHE
Note that whenever we encounter a doubled consonant letter, we can use the doubling initial joiner for it. This eliminates the need to create dedicated final strokes for doubled letters such as "tt" or "dd", but some of them are still included due to their high frequency.
In many of these chords, we add either a -Z
, -D
, or -F
to avoid conflicts.
Final | Chord | Derivatives | Remarks |
---|---|---|---|
b | -B |
bs -BS , bt -BT , bl -BL |
|
c | -BG |
ct -BGT , cts -BGTS |
-BG is used for "c" as it is more common; k has been assigned another chord |
ch | -FP |
chs -FPS , cht -FPT , chts -FPTS |
|
ck | -BLG |
cks -BLGS |
|
d | -D |
||
ddl | -FLGDZ |
Extended from "dl" by adding -F |
|
dg | -GD |
||
dl | -LGDZ |
From Ireland's Stenotypy | |
f | -F |
ft -FT , fs -FS , fts -FTS |
|
g | -G |
||
gh | -PG |
ght -PGT , ghts -PGTS , ghs -PGS |
|
gm | -PLG |
||
gn | -PBGZ |
-Z used to indicate inversion |
|
gs | -GSZ |
-Z used to avoid conflicts with "tion" |
|
h | -PZ |
||
j | -PBLG |
||
k | -LG |
Arbitrary chord assigned to separate it from "c" | |
kh | -PLGZ |
Stacked "k" and "h" | |
ks | -LGS |
||
l | -L |
ls -LS , ld -LD , lt -LT , lts -LTS |
|
lb | -BLZ |
-Z used to indicate inversion and avoid conflicts with "bl" |
|
lc | -BLGZ |
Stacked "l" and "c", -Z used to avoid conflicts with "ck" |
|
lch | -LGZ |
-Z used to avoid conflicts with "k" |
|
lf | -FLZ |
-Z used to indicate inversion |
|
lg | -LGD |
-D used since -LGZ taken by "lch" |
|
lk | -FRLG |
Arbitrary chord assigned to avoid conflicts | |
ll | -LZ |
||
lm | -FRLZ |
-FR used for "m", -Z used to indicate inversion |
|
ln | -PBLZ |
-Z used to indicate inversion |
|
lp | -PLD |
-Z used to indicate inversion |
|
lph | -FLD |
||
lth | -LTD |
||
m | -PL |
||
mb | -FRB |
mbs -FRBS |
-FR used for "m" |
ment | -PLT |
||
ml | -FRL |
-FR used for "m" |
|
mn | -FRPBD |
-D used to avoid conflicts with "nch" |
|
mp | -FRP |
mps -FRPS , mpt -FRPT , mpts -FRPTS |
|
mph | -FPLZ |
-Z used to avoid conflicts with "sm" |
|
n | -PB |
ns -PBS , nd -PBD , nst -PBSZ , nt -PBT , nth -PBTH , nts -PBTS |
|
nc | -FRPBGZ |
-Z used to avoid conflicts with "nk" |
|
nch | -FRPB |
nchs -FRPBS |
|
nct | -FRPBGT |
Note that this chord isn't used for "nkt" | |
ng | -PBG |
ngth -PBGTD |
|
ngs | -PBGS |
||
nk | -FRPBG |
nks -FRPBGS |
See "nc" |
nm | -FRPBDZ |
-DZ used to avoid conflicts with "nch" |
|
nx | -FRPBGSZ |
||
p | -P |
ps -PS , pt -PT , pts -PTS |
|
ph | -FZ |
-Z used to avoid conflicts with "f" |
|
pl | -PLD |
-D used to avoid conflicts with "m" |
|
q | -GZ |
Arbitrary chord assigned to separate it from "c" and "k" | |
r | -R |
rs -RS , rd -RD , rm -RPL , rt -RT , rk -RLG , rn -RPB , rts -RTS , rks -RLGS , rms -RPLS , rns -RPBS , rl -RL , rth -RTD , rp -RP , rls -RLS , rg -RG , rst -RSZ , rps -RPS , rgs -RGSZ , rld -RLD , rnt -RPBT , rgh -RPG |
|
rb | -RBZ |
-Z used to avoid conflicts with "sh" |
|
rc | -RBG |
||
rch | -FRPBZ |
-Z used to avoid conflicts with "nch" |
|
rf | -FR or -FRZ |
rfs -FRS |
-Z can be used to indicate inversion, but is not necessary. |
rph | -FRD |
-D used to avoid conflicts with "rf" |
|
rv | -FRBD |
-D used to avoid conflicts with "mb" |
|
rw | -FRBZ |
-Z used to avoid conflicts with "mb" |
|
s | -S |
||
sc | -FBG |
||
sch | -FPSZ |
-Z used to indicate inversion |
|
sh | -RB |
sht -RBT |
|
sk | -FLG |
||
sm | -FPL |
sms -FPLS |
|
sp | -FPZ |
-Z used to avoid conflicts with "ch" |
|
ss | -TSDZ |
||
st | -SZ |
-Z used to avoid conflicts with "s" |
|
t | -T |
ts -TS |
|
tch | -FPTD |
-D used to indicate inversion |
|
th | -TD |
-D used to avoid conflicts with "t" |
|
tion | -GS |
||
tl | -LGTS |
From Ireland's Stenotypy | |
ttl | -FLGTS |
Extended from "tl" by adding -F |
|
v | -FD |
-D used to avoid conflicts with "f" |
|
w | -FB |
ws -FBS , wl -FBL , wls -FBLS , wk -FBLG , wth -FBTD , wd -FBD , wks -FBLGS , wt -FBT |
|
x | -BGS |
Since the asterisk is for medials, we don't use the asterisk here | |
xt | -GT |
xts -GTS |
|
y | -BZ |
Arbitrary chord assigned to separate it from "w" | |
z | -Z |