Topic Modifier keys behaving differently in different Group.

We have two new locations for Keyman technical support:

The Tavultesoft Forums are now read only.


# Modifier keys behaving differently in different Group.   2016-03-21 10:40:11.520
br Julian Griffin OSL
Hi.

   I have a problem that is hard to describe and demonstrate, but I'll give it a go. I don't think what I am about to outline is to do with Text Services Framework, although it is to with Alt, Ctrl, & Shift.

   My keyboard definition has three primary processing blocks: Menus, Grapheme input Mode (GiM), and Mark-up Mode (MuM). The menu handler is called first, it calls GiM, GiM calls MuM. The menu handlers process menus for both GiM & MuM, and it functions well. GiM is a specialised entry system with very limited valid glyphs, just 48 valid symbols. MuM is a general entry system, and the most common way the keyboard would be used. MuM allows the full use of the whole keyboard. Both GiM & MuM use menus to select glyphs not available from the standard UK keyboard. All I have described so far works well; Keyman is great, better than I had hoped.

   I also wished to create the ability for the user to enter additional glyphs directly from the keyboard, without having to use a menu. In the same way as capital letters are entered with the use of the shift key. I needed two extra 'Shift' states; I hoped to use AltGr & AltGr+Shift. After some experimenting (covered in other posts) I settled on a number of combinations that seemed to work.

   I would build the code for each glyph's modifier keys in GiM, test it and all seemed well. I would then build it into MuM. But some keys combinations that worked in GiM did not work in MuM. After many reiterations of exploration and building, I managed to prove the code was not at fault. So I started to build a simplified keyboard definition to use in a post to ask for help to track down a solution. I built the simplified keyboard by deleted extraneous Rules from the keyboard definition but then the problem seemed to go away. So I will have to explain how to reproduce the problem from the, now, quite complex keyboard definition.

   I have written all this to help trace the issue. The issue is:
The Rules in GiM trap a number of keys with Ctrl + Alt, and all these work as I wish. But with similar Rules for the keys in MuM some keys do not function at all. It took me a very long time to see that the vowel keys (a, e, i, o, u) functioned in MuM, but none of the consonant keys emitted anything.

   The reason I say it is not the code, is because if I make the menu handler call MuM instead if GiM, the MuM keys combinations all function correctly, so the code is not wrong.

   The link for the keyboard definition is:
[url]https://onedrive.live.com/redir?resid=1F64F0F2FE6747F1!49130&authkey=!ALXsMIHj6xem2IY&ithint=folder%2cPNG[/url]
or
[url]https://onedrive.live.com/redir?resid=1F64F0F2FE6747F1!49611&authkey=!AJ3YDcY8A7a7a38&ithint=file%2ckmn[/url]

   So I will need to outline how to use the full keyboard. First use NotePad; Word 2007 can get in the way. There are a number of functions, so I will limit this outline to those exhibiting the problem. I have also set the MenuFlag to 'No', so menus will not get in the way.
      1 ) When first started the keyboard will be in the Mark-up Mode; all keys will function as expected.
      2a) Any Latin letter followed by an equals sign '=' and another Latin letter is entered, eg 'a=e' will collapse to three glyphs over printed on one another, eg 'a' {e above a}.
      2b) Type 'a=[Shift E]', this will collapse to 'a' {e bar, above a}.
      3 ) Type 'a=[Left-Ctrl Left-Alt E]', this will collapse to 'a' {er above a}.
All of which is correct.
      4 ) Now type 'a=[Left-Ctrl Left-Alt N]', and nothing will happen, it should be 'ng' above 'a'. Yet the code for 'N' is the same as the code for 'E'.

   To use GiM: at the top of the page, type '_'. The TPA cursor ' ' will appear. In this mode, only Latin letters are valid.
      1 ) Type '_' at the top of the page.
      2 ) Type any lowercase letter.
      3 ) Type [Shift E] gives ''
      4 ) Type [Left-Ctrl Left-Alt E] gives ''.
      5 ) Type [Left-Ctrl Left-Alt N] gives ''.
   All this is what I wish, but it has basically the same code are MuM. But MuM does not function correctly.

   So I am lost again. Why should only the vowels in MuM function and not the consonants? Yet if MuM is called before GiM, MuM functions correctly.

Regards
Julian

PS I will put the full code of my keyboard definition in the following post.
# RE: Modifier keys behaving differently in different Group.   2016-03-21 10:42:18.477
br Julian Griffin OSL
:
c ╔═════════════════════════════════════════════════════════════════╗
c ║              The Phonic Alphabet (TPA) Keyboard.                ║
c ╚═════════════════════════════════════════════════════════════════╝
c ╒══════════════════════════════════════════════════════════════════
c │ This keyboard provides a complete set of TPA markups and graphemes.
c │ Simple markups are entered by pressing these keys twice after Latin Letter:
c │    )   For a Arch.                NB Press twice after a double letter grapheme.
c │    _   For a Bar.                 NB Press twice after a single vowel or double letter grapheme.
c │    *   For a Silent 'x'.          NB Press twice after a Latin letter.
c │    _   For a Grapheme input Mode. NB Use at the start of a Page, Line, or Cell.
c │    =   For a Superscript Overlay. NB Press twice after a Latin letter to strick it out.
c │        . . . . . . . . . . . . . . . Press Once  between two Latin letters to Strickout and add phonic clue.
c │    `   For a Shwa '`'.            NB Press twice after a single or double letter vowel.
c │    ^   For a low pointer.         NB Not part of TPA, but can be useful to identify a letter.
c │
c │ The TPA Keyboard is designed to work seamlessly with the TPA fonts.
c │ Fonts without the Unicode TPA Private Use Area will function but will be unable to access the TPA graphemes.
c │
c │ Contact ThePhonicAlphabet.uk for the latest imformation.
c ╘══════════════════════════════════════════════════════════════════

c Documentation Builder DRAFT.
c Default mode is MuM. These are the symbols that are valid in this mode.
c . All Letter, Punctuation, symbol, or Number is valid in this mode.
c . a,      e,  i,      o, oo,             sh, th, u   + __ ↔ A_,     E_, I_,     O_, oo_,             sh_, th_ U_
c . ar, ch, er, ir, ng, oo,    or, ow, oy, sh, th, ur, + )) ↔ ar, ch, er, ir, ng, oo,      or, ow, oy, sh,  th, ur
c . Any Latin letter                                   + ** ↔ Cross 'x' above Latin letter for Silent letters.
c . Any Latin letter                                   + == ↔ Latin letter struckout.
c . Any Latin letter + '=' + TPA Grapheme                   ↔ Latin letter struckout + Superscript TPA phonic clue above.
c . Any Latin vowel or 2 Latin vowels                  + `` ↔ Latin vowel(s) + Shwa '`'
c . Any Latin letter                                   + ^^ ↔ Latin letter with an upwards arrow below the letter.
c .
c . GiM: '_' at the beginning of a: Page, Line, Cell, will start Grapheme input Mode (GiM).
c . In this mode the only valid keys are 'a' to 'z', '-', & Space.
c . However, if selecting graphemes from a menu, numbers upto and including the options can be used.
c .    NB Numbers do not for any part of a TPA Construction!
c . When GiM is active and no Graphemes entered,  a second '_', Esc, or Enter; will close GiM.
c . When GiM is active and Graphemes are entered:
c .    a second '_', Tab, or Enter; will keep TPA construction & close GiM.
c .    a Space  ' ' will be added to the TPA construction. Only one if valid.
c .    a Hyphen '-' will be added to the TPA construction. Only one if valid.
c .       If Space or Hypen is entered after one another, they will switch from ' '  ↔  '-'.
c .
c . When GiM is active and Graphemes are entered:
c .    Del will delete the entire TPA Construction; upto 31 graphemes long. A second Del is an error.
c .    Esc will delete the entire TPA Construction; upto 31 graphemes long. A second Esc will close GiM.
c .
c . Menus display a list of opptions for grapheme selection. They only accept numbers upto the number of options.
c .    And no other keys are valid.
c .
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ There are a number of blocks in the keyboard definition like this one.         ▌
c ▐ They hold issues that require resolution before TPA Keyboard can be published. ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ╒══════════════════════════════════════════════════════════════════
c │ The TPA keyboard definition consists of Six main sections:
c │    1. Header                    – Global settings and configuration.
c │    2. Flag definitions          - Used in the keyboard definition.
c │    3. Menu Handler              – Looks after all menu functionality.
c │    4. Grapheme input Mode (GiM) – Controls TPA construction input.
c │    5. MarkUp Mode         (MuM) – Enables TPA markup of standard Latin text.
c │    6. Constants definition      – Holds all the stored constants used in the keyboard definition.
c │
c │ Processing train is: Menu Handler -> GiM -> MuM.
c ╘══════════════════════════════════════════════════════════════════

c ╒══════════════════════════════════════════════════════════════════
c │ TPA Keyboard Header Settings
    Store(&VERSION)          '9.0'
    Store(&Name)             'TPA Keyboard'
    Store(&COPYRIGHT)        '©The Phonic Alphabet 2016'
    Store(&KEYBOARDVERSION) '3.001'
store(&LANGUAGE) 'x0809'
store(&WINDOWSLANGUAGES) 'x0809'
    Store(&ETHNOLOGUECODE)   'Eng'
    Store(&MESSAGE)          'This keyboard is freely redistributable.'
store(&BITMAP) 'TPA 2.000.ico'
    Store(&MnemonicLayout)   '1' c Make keyboard independent of user's keyboard layout.
c ╘══════════════════════════════════════════════════════════════════

c ╔═════════════════════════════════════════════════════════════════╗
c ║ All the Flags the keybpoard definition uses.                    ║
c ╚═════════════════════════════════════════════════════════════════╝
c ╒══════════════════════════════════════════════════════════════════
c │ The 'GiMFlag' indicates if the Grapheme input Mode (GiM) is active.
c │    If 'OFF' (Default) Normal Latin Text and TPA Markup is in active.
c │    If 'On'  TPA GiM is in use, so only a very limited set of keys are valid.
c └──────────────────────────────────────────────────────────────────
    Store(GiMFlag) 'Off' c Normal Latin Text - Recommended.

c ╒══════════════════════════════════════════════════════════════════
c │ The 'ManuFlag' indicates if menus are used for grapheme selcetion.
c │    If 'Yes' (Default) Menus & modifiers are used to enter graphemes.
c │    If 'No'  Only modifiers are used to enter graphemes, for skilled users.
c └──────────────────────────────────────────────────────────────────
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ THIS IS A BODGE UNTIL CONFIGUATION CODE CAN ADDED.              ▌
    Store(MenuFlag) 'No' c 'Yes' or 'No'; Yes is the default.      ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ╔═════════════════════════════════════════════════════════════════╗
    Begin Unicode > Use(MenuHandler)                              c ║
c ╚═════════════════════════════════════════════════════════════════╝

Group(MenuHandler) c Context Only
c ╒══════════════════════════════════════════════════════════════════
c │ Check if one of the menus active.
c │   If so, jump to the appropriate Menu Handler Group.
c │   If not, pass processing to (GiM).
c ├──────────────────────────────────────────────────────────────────
c │ This Group is only called by the UStoUK Group.
c └──────────────────────────────────────────────────────────────────
    Outs(a_Menu) > Use(a_Menu)
    Outs(c_Menu) > Use(c_Menu)
    Outs(e_Menu) > Use(e_Menu)
    Outs(i_Menu) > Use(i_Menu)
    Outs(n_Menu) > Use(n_Menu)
    Outs(o_Menu) > Use(o_Menu)
    Outs(s_Menu) > Use(s_Menu)
    Outs(t_Menu) > Use(t_Menu)
    Outs(u_Menu) > Use(u_Menu)

c ┌──────────────────────────────────────────────────────────────────
c │ If no menu is in the Context, pass processing to the GiM group.
    Nomatch > Use(GiM)

c │ End of MenuHandler
c └─────────────────────────────────────────────────────────────────┘

c ╒══════════════════════════════════════════════════════════════════
c │ All the Groups below, a_Menu ... to ... u_Menu, are the menu handlers
c │   For each Latin letter that has a menu: a, c, e, i, n, o, s, t, & u.
c │ These Groups list the options for the user to select the appropriate grapheme.
c ├──────────────────────────────────────────────────────────────────
c │ Each Group performs the same set of actiones for each menu but for a different Latin letter.
c │   1   If GiMFlag is Off:  Output the grapheme,
c │       then call the Collapse Group, to collapse the text and create the TPA clue (superscript) markup.
c │   1.1 If [K_BKSP] or [K_ESC] is pressed, the menu is cancelled.
c │       The 'nul' absorbs the Backspace key to stop it deleting the character to the left of the menu.
c │
c │   2   If GiMFlag is On: Output the grapheme, the TPAglue, and the TPAcursor symbol.
c │   2.1 If [K_BKSP] or [K_ESC] is pressed, the menu is cancelled and TPA cursor is replaced.
c │
c │   3   If an invalid choice is made, call Group(MenuErrHandler).
c ├──────────────────────────────────────────────────────────────────
c │ These Groups are only called from the MenuHandler Group.
c └──────────────────────────────────────────────────────────────────
Group(a_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(a_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(a_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(a_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(a_err) Use(MenuErrHandler)
    Nomatch              > dk(a_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(c_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(c_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(c_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(c_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(c_err) Use(MenuErrHandler)
    Nomatch              > dk(c_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(e_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(e_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(e_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(e_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(e_err) Use(MenuErrHandler)
    Nomatch              > dk(e_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(i_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(i_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(i_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(i_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(i_err) Use(MenuErrHandler)
    Nomatch              > dk(i_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(n_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices2)   > Index(n_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices2)   > Index(n_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(n_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(n_err) Use(MenuErrHandler)
    Nomatch              > dk(n_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(o_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices7)   > Index(o_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices7)   > Index(o_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(o_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(o_err) Use(MenuErrHandler)
    Nomatch              > dk(o_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(s_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(s_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(s_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(s_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(s_err) Use(MenuErrHandler)
    Nomatch              > dk(s_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(t_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(t_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(t_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(t_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(t_err) Use(MenuErrHandler)
    Nomatch              > dk(t_err) Use(MenuErrHandler)
c ├─────────────────────────────────────────────────────────────────┤
Group(u_Menu) using keys
    If(GiMFlag = 'Off') + Any(Choices3)   > Index(u_Char, 2) Use(Collapse)
    If(GiMFlag = 'On' ) + Any(Choices3)   > Index(u_Char, 2) $TPAglue $TPAcursor
    If(GiMFlag = 'Off') + Any(MenuCancel) > nul
    If(GiMFlag = 'On' ) + Any(MenuCancel) > $TPAcursor

    + Any(TextEffectors) > dk(u_err) Use(MenuErrHandler)
    + Any(CursorKeys)    > dk(u_err) Use(MenuErrHandler)
    Nomatch              > dk(u_err) Use(MenuErrHandler)

c │ End of the menu handler Groups
c └─────────────────────────────────────────────────────────────────┘

Group(Collapse) c Context Only
c ╒══════════════════════════════════════════════════════════════════
c │ Convert the Latin text (eg a=b) to the Latin letter that has the
c │    TPA strickout & TPA superscript clue graphemes coprrectly positioned.
c ├──────────────────────────────────────────────────────────────────
c │ This Group is only called from the menu handler Groups; a_Menu ... to ... u_Menu.
c └──────────────────────────────────────────────────────────────────
c _ a, a_, ar, b, ch, d
    Any(LatinLetter) $StrickoutKey U+F001 > Context(1) Index(Strickout,1) Index(Sup_a,1)   c │ a
    Any(LatinLetter) $StrickoutKey U+F002 > Context(1) Index(Strickout,1) Index(Sup_A_,1)  c │ A_
    Any(LatinLetter) $StrickoutKey U+F003 > Context(1) Index(Strickout,1) Index(Sup_ar,1)  c │ ar
    Any(LatinLetter) $StrickoutKey U+F004 > Context(1) Index(Strickout,1) Index(Sup_b,1)   c │ b
    Any(LatinLetter) $StrickoutKey U+F006 > Context(1) Index(Strickout,1) Index(Sup_ch,1)  c │ ch
    Any(LatinLetter) $StrickoutKey U+F007 > Context(1) Index(Strickout,1) Index(Sup_d,1)   c │ d
c _ e, e_, er, f, g, h
    Any(LatinLetter) $StrickoutKey U+F008 > Context(1) Index(Strickout,1) Index(Sup_e,1)   c │ e
    Any(LatinLetter) $StrickoutKey U+F009 > Context(1) Index(Strickout,1) Index(Sup_E_,1)  c │ E_
    Any(LatinLetter) $StrickoutKey U+F010 > Context(1) Index(Strickout,1) Index(Sup_er,1)  c │ er
    Any(LatinLetter) $StrickoutKey U+F011 > Context(1) Index(Strickout,1) Index(Sup_f,1)   c │ f
    Any(LatinLetter) $StrickoutKey U+F012 > Context(1) Index(Strickout,1) Index(Sup_g,1)   c │ g
    Any(LatinLetter) $StrickoutKey U+F013 > Context(1) Index(Strickout,1) Index(Sup_h,1)   c │ h
c _ i, i_, ir, j, k, l, m, n, ng
    Any(LatinLetter) $StrickoutKey U+F014 > Context(1) Index(Strickout,1) Index(Sup_i,1)   c │ i
    Any(LatinLetter) $StrickoutKey U+F015 > Context(1) Index(Strickout,1) Index(Sup_I_,1)  c │ I_
    Any(LatinLetter) $StrickoutKey U+F016 > Context(1) Index(Strickout,1) Index(Sup_ir,1)  c │ ir
    Any(LatinLetter) $StrickoutKey U+F017 > Context(1) Index(Strickout,1) Index(Sup_j,1)   c │ j
    Any(LatinLetter) $StrickoutKey U+F018 > Context(1) Index(Strickout,1) Index(Sup_k,1)   c │ k
    Any(LatinLetter) $StrickoutKey U+F019 > Context(1) Index(Strickout,1) Index(Sup_l,1)   c │ l
    Any(LatinLetter) $StrickoutKey U+F020 > Context(1) Index(Strickout,1) Index(Sup_m,1)   c │ m
    Any(LatinLetter) $StrickoutKey U+F021 > Context(1) Index(Strickout,1) Index(Sup_n,1)   c │ n
    Any(LatinLetter) $StrickoutKey U+F022 > Context(1) Index(Strickout,1) Index(Sup_ng,1)  c │ ng
c _ o, o_, oo, oo_, or, ow, oy
    Any(LatinLetter) $StrickoutKey U+F023 > Context(1) Index(Strickout,1) Index(Sup_o,1)   c │ o
    Any(LatinLetter) $StrickoutKey U+F024 > Context(1) Index(Strickout,1) Index(Sup_O_,1)  c │ O_
    Any(LatinLetter) $StrickoutKey U+F025 > Context(1) Index(Strickout,1) Index(Sup_oo,1)  c │ oo
    Any(LatinLetter) $StrickoutKey U+F026 > Context(1) Index(Strickout,1) Index(Sup_oo_,1) c │ oo_
    Any(LatinLetter) $StrickoutKey U+F027 > Context(1) Index(Strickout,1) Index(Sup_or,1)  c │ or
    Any(LatinLetter) $StrickoutKey U+F028 > Context(1) Index(Strickout,1) Index(Sup_ow,1)  c │ ow
    Any(LatinLetter) $StrickoutKey U+F029 > Context(1) Index(Strickout,1) Index(Sup_oy,1)  c │ oy
c _ p, q, r, s, sh, sh_, t th, th_
    Any(LatinLetter) $StrickoutKey U+F030 > Context(1) Index(Strickout,1) Index(Sup_p,1)   c │ p
    Any(LatinLetter) $StrickoutKey U+F031 > Context(1) Index(Strickout,1) Index(Sup_q,1)   c │ q
    Any(LatinLetter) $StrickoutKey U+F032 > Context(1) Index(Strickout,1) Index(Sup_r,1)   c │ r
    Any(LatinLetter) $StrickoutKey U+F033 > Context(1) Index(Strickout,1) Index(Sup_s,1)   c │ s
    Any(LatinLetter) $StrickoutKey U+F034 > Context(1) Index(Strickout,1) Index(Sup_sh,1)  c │ sh
    Any(LatinLetter) $StrickoutKey U+F035 > Context(1) Index(Strickout,1) Index(Sup_sh_,1) c │ sh_ 
    Any(LatinLetter) $StrickoutKey U+F036 > Context(1) Index(Strickout,1) Index(Sup_t,1)   c │ t
    Any(LatinLetter) $StrickoutKey U+F037 > Context(1) Index(Strickout,1) Index(Sup_th,1)  c │ th
    Any(LatinLetter) $StrickoutKey U+F038 > Context(1) Index(Strickout,1) Index(Sup_th_,1) c │ th_
c _ u, u_, ur, v, w, x, y, z
    Any(LatinLetter) $StrickoutKey U+F039 > Context(1) Index(Strickout,1) Index(Sup_u,1)   c │ u
    Any(LatinLetter) $StrickoutKey U+F040 > Context(1) Index(Strickout,1) Index(Sup_U_,1)  c │ u_
    Any(LatinLetter) $StrickoutKey U+F041 > Context(1) Index(Strickout,1) Index(Sup_ur,1)  c │ ur
    Any(LatinLetter) $StrickoutKey U+F042 > Context(1) Index(Strickout,1) Index(Sup_v,1)   c │ v
    Any(LatinLetter) $StrickoutKey U+F043 > Context(1) Index(Strickout,1) Index(Sup_w,1)   c │ w
    Any(LatinLetter) $StrickoutKey U+F044 > Context(1) Index(Strickout,1) Index(Sup_x,1)   c │ x
    Any(LatinLetter) $StrickoutKey U+F045 > Context(1) Index(Strickout,1) Index(Sup_y,1)   c │ y
    Any(LatinLetter) $StrickoutKey U+F046 > Context(1) Index(Strickout,1) Index(Sup_z,1)   c │ z

c │ End of Collapse
c └─────────────────────────────────────────────────────────────────┘

Group(MenuErrHandler) c Context Only
c ╒══════════════════════════════════════════════════════════════════
c │ MenuErrHandler matches error markers to redisplay the appropriate
c │ menu and Beep to signal an error.
c ├──────────────────────────────────────────────────────────────────
c │ This Group is only called from the menu handler Groups; a_Menu ... to ... u_Menu.
c └──────────────────────────────────────────────────────────────────
    dk(a_err) > Outs(a_Menu) Beep
    dk(c_err) > Outs(c_Menu) Beep
    dk(e_err) > Outs(e_Menu) Beep
    dk(i_err) > Outs(i_Menu) Beep
    dk(n_err) > Outs(n_Menu) Beep
    dk(o_err) > Outs(o_Menu) Beep
    dk(s_err) > Outs(s_Menu) Beep
    dk(t_err) > Outs(t_Menu) Beep
    dk(u_err) > Outs(u_Menu) Beep

c │ End of MenuErrHandler
c └─────────────────────────────────────────────────────────────────┘
c Processing complete, return to listening for a key press.

c □■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□
Group(GiM) Using Keys
c ╒══════════════════════════════════════════════════════════════════
c │ If user wishe to enter a TPA Construction, Grapheme input Mode (GiM) needs to be started.
c │ If Grapheme Key pressed at the start of Page, Line, or Cell, Set GiMFlag flag to 'Yes'.
c │
c │ If GiMFlag is active,     Process all keys in relation to GiM requirements.
c │ If GiMFlag is not active, Pass processing to the MuM Group.
c ├──────────────────────────────────────────────────────────────────
c │ This Group is called from the MenuHandler Group.
c └──────────────────────────────────────────────────────────────────

c ╒══════════════════════════════════════════════════════════════════
c │ Initiate TPA Grapheme input Mode (GiM).
    nul + $GrahemeKey > $TPAcursor Set(GiMFlag = 'On')
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ The 'nul' in the Rule above does not fire at the start of a     ▌
c ▐ line. It does fire at the start of a Page or Cell in Word 2007. ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ╒══════════════════════════════════════════════════════════════════
c │ If GiM is not active pass processing to MuM.
    If(GiMFlag  = 'Off') + Any(AllGlyphs) > Use(MuM)

c ┌──────────────────────────────────────────────────────────────────
c │ NB The following Rules are only used when the GiMFlag flag is 'Yes'
c │ Although the GiMFlag could be tested in each Rule. This would be essentially
c │    superfluous as the: TPA Graphemes, Glue, Space, & Hypen only ever
c │    appear to the left of the text cursor when in Grapheme input Mode (GiM).
c │    To test both the flag and these symbols would be a tautology;
c │    and having these keys in the context allows them to be easily deleted as needed.
c └──────────────────────────────────────────────────────────────────
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ However, Esc does not work as expected.                                  ▌
c ▐   If(GiMFlag = 'On') + nul $TPAcursor + [K_ESC]   > Set(GiMFlag = 'Off') ▌
c ▐ But the line below does work.                                            ▌
c ▐   If(GiMFlag = 'On') + nul $TPAcursor + [K_ENTER] > Set(GiMFlag = 'Off') ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌
c ┌──────────────────────────────────────────────────────────────────
c │ Close GiM; if no graphemes entered; remove TPA Cursor and set GiMFlag 'Off'.
    nul $TPAcursor + $GrahemeKey > Set(GiMFlag = 'Off')
    nul $TPAcursor + [K_ESC]     > Set(GiMFlag = 'Off')
    nul $TPAcursor + [K_ENTER]   > Set(GiMFlag = 'Off')

c ┌──────────────────────────────────────────────────────────────────
c │ Close GiM; keep TPA Construction, Clean out Glue & Cursor, and set GiMFlag 'Off'.
    Any(TPApunctuation) $TPAcursor + $GrahemeKey > Set(GiMFlag = 'Off')
    Any(TPApunctuation) $TPAcursor + [K_TAB]     > Set(GiMFlag = 'Off')
    Any(TPApunctuation) $TPAcursor + [K_ENTER]   > Set(GiMFlag = 'Off')

c ┌──────────────────────────────────────────────────────────────────
c │ TPA Space.
    $TPAglue  $TPAcursor + ' ' > $TPAspace $TPAcursor      c Add a TPA Space to the GiM string.
    $TPAspace $TPAcursor + ' ' > $TPAspace $TPAcursor Beep c Only one TPA Space is valid so replace contexct.
    '-'       $TPAcursor + ' ' > $TPAspace $TPAcursor      c Swap Hypen for TPA Space.
    nul       $TPAcursor + ' ' >           $TPAcursor Beep c TPA Space is not valid at the start of a construction.

c ┌──────────────────────────────────────────────────────────────────
c │ Hyphen. [TPA uses the standard Latin hypen.]
    $TPAglue  $TPAcursor + '-' > '-' $TPAcursor      c Add a Hypen to the GiM string.
    '-'       $TPAcursor + '-' > '-' $TPAcursor Beep c Only one Hyphen is valid.
    $TPAspace $TPAcursor + '-' > '-' $TPAcursor      c Swap TPAspace for Hypen.
    nul       $TPAcursor + '-' >     $TPAcursor Beep c Hypen is not valid at the start of a construction.

c ┌──────────────────────────────────────────────────────────────────
c │ Backspace allows a TPA construction to be edited by stepping backwards through it.
c │ Delete the Glue, Space, or Hypen and the Grapheme, then replace TPA Cursor.
    $TPAglue  $TPAcursor + [K_BKSP] > Use(GiMcloseEdit) $TPAcursor
    $TPAspace $TPAcursor + [K_BKSP] > $TPAglue          $TPAcursor c Replace TPA Space with TPA glue.
    '-'       $TPAcursor + [K_BKSP] > $TPAglue          $TPAcursor c Replace   Hypen   with TPA glue.
    nul       $TPAcursor + [K_BKSP] > nul $TPAcursor    Beep       c Backspace is not valid at the start of a construction.
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ NB The line 4 above gives the warnings below.                             ▌
c ▐    Warning 209E: A rule with use() statements in the                      ▌
c ▐       output should not have other content following the use() statements ▌
c ▐                                                                           ▌
c ▐ But I can see no other way to achieve what this line does.                ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ┌──────────────────────────────────────────────────────────────────
c │ The DEL or ESC key removes the entire TPA construction, upto 31 graphemes in length.
c │ [32 or 64 appears to be the upper limit of the Windows/Keyman keyboard buffer.]
c │ Each next Rule removes one extra Grapheme & Punctuation set.

c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐           There must be a better way to do this!          ▌
c ▐           I tried to recursively calling a Group,         ▌
c ▐           but I could not get it to work.                 ▌
c ▐           Perhaps a new command would be useful:          ▌
c ▐              Multi(Any(List1) Any(List2), #)              ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

    $TPAcursor + Any(Redo) > $TPAcursor Beep c Del at the start of a Page, Line, or Cell is not valid.
    Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor
    Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) Any(TPAgrapheme) Any(TPApunctuation) $TPAcursor + Any(Redo) > $TPAcursor

c ┌──────────────────────────────────────────────────────────────────
c │ Menu Grapheme selection in GiM.
c │    If MenuFlag is 'Yes', these Rules display menus for grapheme selection.
c │ Only lowercase Latin letters are used to display menus.
c │    This allows the modifier key entry (below) to still function.
    If(MenuFlag = 'Yes') $TPAcursor +  ['A']  > Outs(a_Menu) c a  A_ ar
    If(MenuFlag = 'Yes') $TPAcursor + Any(cC) > Outs(c_Menu) c ch k  s
    If(MenuFlag = 'Yes') $TPAcursor +  ['E']  > Outs(e_Menu) c e  E_ er
    If(MenuFlag = 'Yes') $TPAcursor +  ['I']  > Outs(i_Menu) c i  I_ ir
    If(MenuFlag = 'Yes') $TPAcursor + Any(nN) > Outs(n_Menu) c n  ng
    If(MenuFlag = 'Yes') $TPAcursor +  ['O']  > Outs(o_Menu) c o  O_ oo oo_ or ow oy
    If(MenuFlag = 'Yes') $TPAcursor + Any(sS) > Outs(s_Menu) c s  sh sh_
    If(MenuFlag = 'Yes') $TPAcursor + Any(tT) > Outs(t_Menu) c t  th th_
    If(MenuFlag = 'Yes') $TPAcursor +  ['U']  > Outs(u_Menu) c u  U_ ur

c ┌──────────────────────────────────────────────────────────────────
c │ Modifier-key for grapheme selection in GiM.
c │    If MenuFlag is 'No' Use modifier keys to enter graphemes.
c │ NB Commented out lines below show what was used before the MenuFlag code was added.
    If(MenuFlag != 'Yes') $TPAcursor + ['A'] > U+F001 $TPAglue $TPAcursor c a
    If(MenuFlag != 'Yes') $TPAcursor + ['E'] > U+F008 $TPAglue $TPAcursor c e
    If(MenuFlag != 'Yes') $TPAcursor + ['I'] > U+F014 $TPAglue $TPAcursor c i
    If(MenuFlag != 'Yes') $TPAcursor + ['O'] > U+F023 $TPAglue $TPAcursor c o
    If(MenuFlag != 'Yes') $TPAcursor + ['U'] > U+F039 $TPAglue $TPAcursor c u

c ┌──────────────────────────────────────────────────────────────────
c │ These Rules emit all the graphemes in TPA by use of modifier keys.
c │ The Modifier Keys function whether or not the GiMFlag is 'Yes' or 'No'
c │ NB Only 'oo', 'sh', & 'th' need the modifiers [RALT] & [RCTRL RALT].
c │    For consistancy 'ar', 'ch', 'er', 'ir', 'ng', 'or', 'ow', 'oy', & 'ur' have been given a
c │    [RCTRL RALT]; which is the same as the [RALT] Rule for that letter.
c │ NB Starred '*' Rules are duplicates of one another, eg [RALT 'A'] & [RCTRL RALT 'A'] emit the same grapheme.
c _ $TPAcursor + [                 'A'] > U+F001 $TPAglue $TPAcursor c a
    $TPAcursor + [SHIFT            'A'] > U+F002 $TPAglue $TPAcursor c A_
    $TPAcursor + [      LCTRL LALT 'A'] > U+F003 $TPAglue $TPAcursor c ar  *
    $TPAcursor + [      RCTRL LALT 'A'] > U+F003 $TPAglue $TPAcursor c ar  *
    $TPAcursor + [      LCTRL RALT 'A'] > U+F003 $TPAglue $TPAcursor c ar  *
    $TPAcursor + [      RCTRL RALT 'A'] > U+F003 $TPAglue $TPAcursor c ar  *
    $TPAcursor + Any(bB)                > U+F004 $TPAglue $TPAcursor c b
    $TPAcursor + Any(cC)                > U+F006 $TPAglue $TPAcursor c ch  *
    $TPAcursor + [      LCTRL LALT 'C'] > U+F006 $TPAglue $TPAcursor c ch  *
    $TPAcursor + [      RCTRL LALT 'C'] > U+F006 $TPAglue $TPAcursor c ch  *
    $TPAcursor + [      LCTRL RALT 'C'] > U+F006 $TPAglue $TPAcursor c ch  *
    $TPAcursor + [      RCTRL RALT 'C'] > U+F006 $TPAglue $TPAcursor c ch  *
    $TPAcursor + Any(dD)                > U+F007 $TPAglue $TPAcursor c d

c _ $TPAcursor + [                 'E'] > U+F008 $TPAglue $TPAcursor c e
    $TPAcursor + [SHIFT            'E'] > U+F009 $TPAglue $TPAcursor c E_
    $TPAcursor + [      LCTRL LALT 'E'] > U+F010 $TPAglue $TPAcursor c er  *
    $TPAcursor + [      RCTRL LALT 'E'] > U+F010 $TPAglue $TPAcursor c er  *
    $TPAcursor + [      LCTRL RALT 'E'] > U+F010 $TPAglue $TPAcursor c er  *
    $TPAcursor + [      RCTRL RALT 'E'] > U+F010 $TPAglue $TPAcursor c er  *
    $TPAcursor + Any(fF)                > U+F011 $TPAglue $TPAcursor c f
    $TPAcursor + Any(Gg)                > U+F012 $TPAglue $TPAcursor c g
    $TPAcursor + Any(Hh)                > U+F013 $TPAglue $TPAcursor c h

c _ $TPAcursor + [                 'I'] > U+F014 $TPAglue $TPAcursor c i
    $TPAcursor + [SHIFT            'I'] > U+F015 $TPAglue $TPAcursor c I_
    $TPAcursor + [      LCTRL LALT 'I'] > U+F016 $TPAglue $TPAcursor c ir  *
    $TPAcursor + [      RCTRL LALT 'I'] > U+F016 $TPAglue $TPAcursor c ir  *
    $TPAcursor + [      LCTRL RALT 'I'] > U+F016 $TPAglue $TPAcursor c ir  *
    $TPAcursor + [      RCTRL RALT 'I'] > U+F016 $TPAglue $TPAcursor c ir  *
    $TPAcursor + Any(jJ)                > U+F017 $TPAglue $TPAcursor c j
    $TPAcursor + Any(kK)                > U+F018 $TPAglue $TPAcursor c k
    $TPAcursor + Any(lL)                > U+F019 $TPAglue $TPAcursor c l
    $TPAcursor + Any(mM)                > U+F020 $TPAglue $TPAcursor c m
    $TPAcursor + Any(nN)                > U+F021 $TPAglue $TPAcursor c n
    $TPAcursor + [      LCTRL LALT 'N'] > U+F022 $TPAglue $TPAcursor c ng  *
    $TPAcursor + [      RCTRL LALT 'N'] > U+F022 $TPAglue $TPAcursor c ng  *
    $TPAcursor + [      LCTRL RALT 'N'] > U+F022 $TPAglue $TPAcursor c ng  *
    $TPAcursor + [      RCTRL RALT 'N'] > U+F022 $TPAglue $TPAcursor c ng  *

c _ $TPAcursor + [                 'O'] > U+F023 $TPAglue $TPAcursor c o
    $TPAcursor + [SHIFT            'O'] > U+F024 $TPAglue $TPAcursor c O_

    $TPAcursor + [      LCTRL LALT 'O'] > U+F025 $TPAglue $TPAcursor c oo  *
    $TPAcursor + [      RCTRL LALT 'O'] > U+F025 $TPAglue $TPAcursor c oo  *
    $TPAcursor + [      LCTRL RALT 'O'] > U+F026 $TPAglue $TPAcursor c OO_ *
    $TPAcursor + [      RCTRL RALT 'O'] > U+F026 $TPAglue $TPAcursor c OO_ *

    $TPAcursor + [      LCTRL LALT 'R'] > U+F027 $TPAglue $TPAcursor c or  *
    $TPAcursor + [      RCTRL LALT 'R'] > U+F027 $TPAglue $TPAcursor c or  *
    $TPAcursor + [      LCTRL RALT 'R'] > U+F027 $TPAglue $TPAcursor c or  *
    $TPAcursor + [      RCTRL RALT 'R'] > U+F027 $TPAglue $TPAcursor c or  *

    $TPAcursor + [      LCTRL LALT 'W'] > U+F028 $TPAglue $TPAcursor c ow  *
    $TPAcursor + [      RCTRL LALT 'W'] > U+F028 $TPAglue $TPAcursor c ow  *
    $TPAcursor + [      LCTRL RALT 'W'] > U+F028 $TPAglue $TPAcursor c ow  *
    $TPAcursor + [      RCTRL RALT 'W'] > U+F028 $TPAglue $TPAcursor c ow  *

    $TPAcursor + [      LCTRL LALT 'Y'] > U+F029 $TPAglue $TPAcursor c oy  *
    $TPAcursor + [      RCTRL LALT 'Y'] > U+F029 $TPAglue $TPAcursor c oy  *
    $TPAcursor + [      LCTRL RALT 'Y'] > U+F029 $TPAglue $TPAcursor c oy  *
    $TPAcursor + [      RCTRL RALT 'Y'] > U+F029 $TPAglue $TPAcursor c oy  *

    $TPAcursor + Any(pP)                > U+F030 $TPAglue $TPAcursor c p
    $TPAcursor + Any(qQ)                > U+F031 $TPAglue $TPAcursor c q
    $TPAcursor + Any(rR)                > U+F032 $TPAglue $TPAcursor c r
    $TPAcursor + Any(sS)                > U+F033 $TPAglue $TPAcursor c s
    $TPAcursor + [      LCTRL LALT 'S'] > U+F034 $TPAglue $TPAcursor c sh  *
    $TPAcursor + [      RCTRL LALT 'S'] > U+F034 $TPAglue $TPAcursor c sh  *
    $TPAcursor + [      LCTRL RALT 'S'] > U+F035 $TPAglue $TPAcursor c sh_ *
    $TPAcursor + [      RCTRL RALT 'S'] > U+F035 $TPAglue $TPAcursor c sh_ *
    $TPAcursor + Any(tT)                > U+F036 $TPAglue $TPAcursor c t
    $TPAcursor + [      LCTRL LALT 'T'] > U+F037 $TPAglue $TPAcursor c th  *
    $TPAcursor + [      RCTRL LALT 'T'] > U+F037 $TPAglue $TPAcursor c th  *
    $TPAcursor + [      LCTRL RALT 'T'] > U+F038 $TPAglue $TPAcursor c th_ *
    $TPAcursor + [      RCTRL RALT 'T'] > U+F038 $TPAglue $TPAcursor c th_ *

c _ $TPAcursor + [                 'U'] > U+F039 $TPAglue $TPAcursor c u
    $TPAcursor + [SHIFT            'U'] > U+F040 $TPAglue $TPAcursor c U_
    $TPAcursor + [      LCTRL LALT 'U'] > U+F041 $TPAglue $TPAcursor c ur  *
    $TPAcursor + [      RCTRL LALT 'U'] > U+F041 $TPAglue $TPAcursor c ur  *
    $TPAcursor + [      LCTRL RALT 'U'] > U+F041 $TPAglue $TPAcursor c ur  *
    $TPAcursor + [      RCTRL RALT 'U'] > U+F041 $TPAglue $TPAcursor c ur  *
    $TPAcursor + Any(vV)                > U+F042 $TPAglue $TPAcursor c v
    $TPAcursor + Any(wW)                > U+F043 $TPAglue $TPAcursor c w
    $TPAcursor + Any(xX)                > U+F044 $TPAglue $TPAcursor c x
    $TPAcursor + Any(yY)                > U+F045 $TPAglue $TPAcursor c y
    $TPAcursor + Any(zZ)                > U+F046 $TPAglue $TPAcursor c z
c │ NB Stared '*' Rules are dublicates of one another, eg [RALT 'U'] & [RCTRL RALT 'U']  emit the same graphgeme.

c ┌──────────────────────────────────────────────────────────────────
c │ Through away all other displayable symbols.
c │    None of the modifier keys are used in these Stores.
    $TPAcursor + Any(LatinLetter)   > $TPAcursor Beep
    $TPAcursor + Any(Number)        > $TPAcursor Beep
    $TPAcursor + Any(Symbol)        > $TPAcursor Beep
    $TPAcursor + Any(AltGr)         > $TPAcursor Beep
    $TPAcursor + Any(CursorKeys)    > $TPAcursor Beep
    $TPAcursor + Any(TextEffectors) > $TPAcursor Beep

c ┌──────────────────────────────────────────────────────────────────
c │ TPA Grapeme input Mode not requested nor running, pass processing to the MuM group.
    Nomatch > Use(MuM)
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ At the start of this Group is the line below:           ▌
c ▐    If(GiMFlag  = 'Off') + Any(AllGlyphs) > Use(MuM)     ▌
c ▐                                                         ▌
c ▐ The line above:                                         ▌
c ▐    Nomatch > Use(MuM)                                   ▌
c ▐                                                         ▌
c ▐ My question is; Which is the best way to ensure         ▌
c ▐                 that the Group MuM to always be called? ▌
c ▐                                                         ▌
c ▐ Or Do these lines do the same thing? (I suspect not)    ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c │ End of GiM
c └─────────────────────────────────────────────────────────────────┘

Group(GiMcloseEdit) Using Keys
c ╔═════════════════════════════════════════════════════════════════╗
c ║ An empty 'Using Keys' group as final group ensures original     ║
c ║ keystroke is emitted.                                           ║
c ╟─────────────────────────────────────────────────────────────────╢
c ║ This Group is only called from a Backspace Rule in GiM.         ║
c ╚═════════════════════════════════════════════════════════════════╝
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ This GiMcloseEdit group is only called once, the BKSP Rules in  ▌
c ▐ the editing part of GiM. This works in the Test Keyboard window ▌
c ▐ in TIKE, but not when the keyboard is installed.                ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c │ End of GiMcloseEdit
c └─────────────────────────────────────────────────────────────────┘
c Processing complete, return to listening for a key press.

c □■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□
Group(MuM) using keys
c ╒══════════════════════════════════════════════════════════════════
c │ Markup Mode (MuM).
c │    Handles Latin Text and TPA markups of that text.
c │    This is the most common way to use TPA keyboard.
c ├──────────────────────────────────────────────────────────────────
c │ This Group is called from the GiM Group.
c └──────────────────────────────────────────────────────────────────

c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ These two Rules are needed so the 102 key will emit the symbols. ▌
    + '\' > '\'                                                    c ▌
    + '|' > '|'                                                    c ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ┌──────────────────────────────────────────────────────────────────
c │ The Rule below adds TPA Glue to the output.
c │ TPA Glue is only ever used with TPA building blocks (Contructions).
c │ To reduce the risk that it be used with standard Latin letters,
c │    it has been commented out of TPA keyboard definition.
c │
c │ *** $GrahemeKey $GrahemeKey + $GrahemeKey > $TPAglue ***
c └──────────────────────────────────────────────────────────────────

c ┌──────────────────────────────────────────────────────────────────
c │ Add an 'x' above silent Latin Letters.
    Any(LatinLetter) $SilentKey + $SilentKey > Context(1) Index(SilentLetterMarkup, 1)

c ┌──────────────────────────────────────────────────────────────────
c │ Strickout a Latin Letter WITHOUT a TPA superscript Clue
c │ (used with multi letter phonemes).
    Any(LatinLetter) $StrickoutKey + $StrickoutKey > Context(1) Index(StrickOut,1)

c ┌──────────────────────────────────────────────────────────────────
c │ TPA Space,
c │ a low tilda.
    ' ' $GrahemeKey + $GrahemeKey > $TPAspace

c ┌──────────────────────────────────────────────────────────────────
c │ Hypen.
c │ NB TPA uses the standard Latin hypen, so there is no need for a specific Rule for the Hypen.

c ┌──────────────────────────────────────────────────────────────────
c │ Add an arrow below a Latin Letters.
c │ NB not strictly speaking part of TPA, it is included just because it can be useful.
    Any(LatinLetter) $PointerKey + $PointerKey > Context(1) Index(Pointer,1)

c ┌──────────────────────────────────────────────────────────────────
c │ Single letter Vowel markups.
c │ NB all single letter vowels use only the overline bar.
    Any(Vowel) $BarKey  + $BarKey  > Context(1) Index(TPAbar, 1) c a, e, i, o, u

c ┌──────────────────────────────────────────────────────────────────
c │ Double letter vowel markups.
c │ NB The oo graphemes use a different Arch & Tie unicode codepoints.
c │    This is to ensure that when sorting TPA constructions they come in the right place.
    Any(aA) Any(rR) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c ar
    Any(eE) Any(rR) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c er
    Any(iI) Any(rR) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c ir
    Any(oO) Any(oO) $ArchKey + $ArchKey > Context(1) $ArchO Context(2) c oo  This grapheme has an Aarch & a Tie.
    Any(oO) Any(oO) $BarKey  + $BarKey  > Context(1) $TieO  Context(2) c oo_ This grapheme has an Aarch & a Tie.
    Any(oO) Any(rR) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c or
    Any(oO) Any(wW) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c ow
    Any(oO) Any(yY) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c oy
    Any(uU) Any(rR) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c ur
c ┌──────────────────────────────────────────────────────────────────
c │ Two letter consonants. NB 'sh' & 'th' have both an Arch and a Tie.
    Any(cC) Any(hH) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c ch
    Any(nN) Any(gG) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c ng
    Any(sS) Any(hH) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c sh  This grapheme has an Aarch & a Tie.
    Any(sS) Any(hH) $BarKey  + $BarKey  > Context(1) $Tie_  Context(2) c sh_ This grapheme has an Aarch & a Tie.
    Any(tT) Any(hH) $ArchKey + $ArchKey > Context(1) $Arch_ Context(2) c th  This grapheme has an Aarch & a Tie.
    Any(tT) Any(hH) $BarKey  + $BarKey  > Context(1) $Tie_  Context(2) c th_ This grapheme has an Aarch & a Tie.

c ┌──────────────────────────────────────────────────────────────────
c │ Menu Grapheme selection in MuM.
c │    If MenuFlag is 'Yes', these Rules display menus for grapheme selection.
c │ Only lowercase Latin letters are used to display menus.
c │    This allows the modifier key entry (below) to still function.
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + ['A']   > Context Outs(a_Menu) c │ a  A_ ar
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + Any(cC) > Context Outs(c_Menu) c │ ch k  s
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + ['E']   > Context Outs(e_Menu) c │ e  E_ er
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + ['I']   > Context Outs(i_Menu) c │ i  I_ ir
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + Any(nN) > Context Outs(n_Menu) c │ n  ng
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + ['O']   > Context Outs(o_Menu) c │ o  O_ oo oo_  or ow oy
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + Any(sS) > Context Outs(s_Menu) c │ s  sh sh_
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + Any(tT) > Context Outs(t_Menu) c │ t  th th_
    If(MenuFlag = 'Yes') Any(LatinLetter) $StrickoutKey + ['U']   > Context Outs(u_Menu) c │ u  U_ ur

c ┌──────────────────────────────────────────────────────────────────
c │ Modifier-key for grapheme selection in MuM.
c │    If MenuFlag is 'No' Use modifier keys to enter graphemes.
    If(MenuFlag != 'Yes') Any(LatinLetter) $StrickoutKey + ['A'] > Context(1) Index(Strickout,2) Index(Sup_a,2) c │ a
    If(MenuFlag != 'Yes') Any(LatinLetter) $StrickoutKey + ['E'] > Context(1) Index(Strickout,2) Index(Sup_e,2) c │ e
    If(MenuFlag != 'Yes') Any(LatinLetter) $StrickoutKey + ['I'] > Context(1) Index(Strickout,2) Index(Sup_i,2) c │ i
    If(MenuFlag != 'Yes') Any(LatinLetter) $StrickoutKey + ['O'] > Context(1) Index(Strickout,2) Index(Sup_o,2) c │ o
    If(MenuFlag != 'Yes') Any(LatinLetter) $StrickoutKey + ['U'] > Context(1) Index(Strickout,2) Index(Sup_u,2) c │ u

c ┌──────────────────────────────────────────────────────────────────
c │ These Rules emit all the graphemes in TPA by use of modifier keys.
c │ NB Only 'oo', 'sh', & 'th' need the modifiers [RALT] & [RCTRL RALT].
c │    For consistancy 'ar', 'ch', 'er', 'ir', 'ng', 'or', 'ow', 'oy', & 'ur' have been given a
c │    [RCTRL RALT]; which is the same as the [RALT] Rule for that letter.
c │ NB Starred '*' Rules are duplicates of one another, eg [RALT 'A'] & [RCTRL RALT 'A'] emit the same grapheme.
c │ NB Commented out lines below show what was used before the MenuFlag code was added.
c _ Any(LatinLetter) $StrickoutKey + [                 'A'] > Context(1) Index(Strickout,1) Index(Sup_a,1)   c │ a
    Any(LatinLetter) $StrickoutKey + [SHIFT            'A'] > Context(1) Index(Strickout,1) Index(Sup_A_,1)  c │ A_
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'A'] > Context(1) Index(Strickout,1) Index(Sup_ar,1)  c │ ar  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'A'] > Context(1) Index(Strickout,1) Index(Sup_ar,1)  c │ ar  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'A'] > Context(1) Index(Strickout,1) Index(Sup_ar,1)  c │ ar  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'A'] > Context(1) Index(Strickout,1) Index(Sup_ar,1)  c │ ar  *

    Any(LatinLetter) $StrickoutKey + Any(bB)                > Context(1) Index(Strickout,1) Index(Sup_b,1)   c │ b
    Any(LatinLetter) $StrickoutKey + Any(cC)                > Context(1) Index(Strickout,1) Index(Sup_ch,1)  c │ ch  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'C'] > Context(1) Index(Strickout,1) Index(Sup_ch,1)  c │ ch  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'C'] > Context(1) Index(Strickout,1) Index(Sup_ch,1)  c │ ch  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'C'] > Context(1) Index(Strickout,1) Index(Sup_ch,1)  c │ ch  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'C'] > Context(1) Index(Strickout,1) Index(Sup_ch,1)  c │ ch  *
    Any(LatinLetter) $StrickoutKey + Any(dD)                > Context(1) Index(Strickout,1) Index(Sup_d,1)   c │ d

c _ Any(LatinLetter) $StrickoutKey + [                 'E'] > Context(1) Index(Strickout,1) Index(Sup_e,1)   c │ e
    Any(LatinLetter) $StrickoutKey + [SHIFT            'E'] > Context(1) Index(Strickout,1) Index(Sup_E_,1)  c │ E_
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'E'] > Context(1) Index(Strickout,1) Index(Sup_er,1)  c │ er  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'E'] > Context(1) Index(Strickout,1) Index(Sup_er,1)  c │ er  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'E'] > Context(1) Index(Strickout,1) Index(Sup_er,1)  c │ er  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'E'] > Context(1) Index(Strickout,1) Index(Sup_er,1)  c │ er  *
    Any(LatinLetter) $StrickoutKey + Any(fF)                > Context(1) Index(Strickout,1) Index(Sup_f,1)   c │ f
    Any(LatinLetter) $StrickoutKey + Any(gG)                > Context(1) Index(Strickout,1) Index(Sup_g,1)   c │ g
    Any(LatinLetter) $StrickoutKey + Any(hH)                > Context(1) Index(Strickout,1) Index(Sup_h,1)   c │ h

c _ Any(LatinLetter) $StrickoutKey + [                 'I'] > Context(1) Index(Strickout,1) Index(Sup_i,1)   c │ i
    Any(LatinLetter) $StrickoutKey + [SHIFT            'I'] > Context(1) Index(Strickout,1) Index(Sup_I_,1)  c │ I_
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'I'] > Context(1) Index(Strickout,1) Index(Sup_ir,1)  c │ ir  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'I'] > Context(1) Index(Strickout,1) Index(Sup_ir,1)  c │ ir  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'I'] > Context(1) Index(Strickout,1) Index(Sup_ir,1)  c │ ir  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'I'] > Context(1) Index(Strickout,1) Index(Sup_ir,1)  c │ ir  *
    Any(LatinLetter) $StrickoutKey + Any(jJ)                > Context(1) Index(Strickout,1) Index(Sup_j,1)   c │ j
    Any(LatinLetter) $StrickoutKey + Any(kK)                > Context(1) Index(Strickout,1) Index(Sup_k,1)   c │ k
    Any(LatinLetter) $StrickoutKey + Any(lL)                > Context(1) Index(Strickout,1) Index(Sup_l,1)   c │ l
    Any(LatinLetter) $StrickoutKey + Any(mM)                > Context(1) Index(Strickout,1) Index(Sup_m,1)   c │ m
    Any(LatinLetter) $StrickoutKey + Any(nN)                > Context(1) Index(Strickout,1) Index(Sup_n,1)   c │ n
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'N'] > Context(1) Index(Strickout,1) Index(Sup_ng,1)  c │ ng  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'N'] > Context(1) Index(Strickout,1) Index(Sup_ng,1)  c │ ng  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'N'] > Context(1) Index(Strickout,1) Index(Sup_ng,1)  c │ ng  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'N'] > Context(1) Index(Strickout,1) Index(Sup_ng,1)  c │ ng  *

c _ Any(LatinLetter) $StrickoutKey + [                 'O'] > Context(1) Index(Strickout,1) Index(Sup_o,1)   c │ o
    Any(LatinLetter) $StrickoutKey + [SHIFT            'O'] > Context(1) Index(Strickout,1) Index(Sup_O_,1)  c │ O_

    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'O'] > Context(1) Index(Strickout,1) Index(Sup_oo,1)  c │ oo  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'O'] > Context(1) Index(Strickout,1) Index(Sup_oo,1)  c │ oo  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'O'] > Context(1) Index(Strickout,1) Index(Sup_oo_,1) c │ OO_ *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'O'] > Context(1) Index(Strickout,1) Index(Sup_oo_,1) c │ OO_ *

    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'R'] > Context(1) Index(Strickout,1) Index(Sup_or,1)  c │ or  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'R'] > Context(1) Index(Strickout,1) Index(Sup_or,1)  c │ or  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'R'] > Context(1) Index(Strickout,1) Index(Sup_or,1)  c │ or  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'R'] > Context(1) Index(Strickout,1) Index(Sup_or,1)  c │ or  *

    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'W'] > Context(1) Index(Strickout,1) Index(Sup_ow,1)  c │ ow  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'W'] > Context(1) Index(Strickout,1) Index(Sup_ow,1)  c │ ow  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'W'] > Context(1) Index(Strickout,1) Index(Sup_ow,1)  c │ ow  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'W'] > Context(1) Index(Strickout,1) Index(Sup_ow,1)  c │ ow  *

    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'Y'] > Context(1) Index(Strickout,1) Index(Sup_oy,1)  c │ oy  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'Y'] > Context(1) Index(Strickout,1) Index(Sup_oy,1)  c │ oy  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'Y'] > Context(1) Index(Strickout,1) Index(Sup_oy,1)  c │ oy  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'Y'] > Context(1) Index(Strickout,1) Index(Sup_oy,1)  c │ oy  *

    Any(LatinLetter) $StrickoutKey + Any(pP)                > Context(1) Index(Strickout,1) Index(Sup_p,1)   c │ p
    Any(LatinLetter) $StrickoutKey + Any(qQ)                > Context(1) Index(Strickout,1) Index(Sup_q,1)   c │ q
    Any(LatinLetter) $StrickoutKey + Any(rR)                > Context(1) Index(Strickout,1) Index(Sup_r,1)   c │ r
    Any(LatinLetter) $StrickoutKey + Any(sS)                > Context(1) Index(Strickout,1) Index(Sup_s,1)   c │ s
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'S'] > Context(1) Index(Strickout,1) Index(Sup_sh,1)  c │ sh  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'S'] > Context(1) Index(Strickout,1) Index(Sup_sh,1)  c │ sh  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'S'] > Context(1) Index(Strickout,1) Index(Sup_sh_,1) c │ sh_ *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'S'] > Context(1) Index(Strickout,1) Index(Sup_sh_,1) c │ sh_ *
    Any(LatinLetter) $StrickoutKey + Any(tT)                > Context(1) Index(Strickout,1) Index(Sup_t,1)   c │ t
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'T'] > Context(1) Index(Strickout,1) Index(Sup_th,1)  c │ th  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'T'] > Context(1) Index(Strickout,1) Index(Sup_th,1)  c │ th  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'T'] > Context(1) Index(Strickout,1) Index(Sup_th_,1) c │ th_ *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'T'] > Context(1) Index(Strickout,1) Index(Sup_th_,1) c │ th_ *

c _ Any(LatinLetter) $StrickoutKey + [                 'U'] > Context(1) Index(Strickout,1) Index(Sup_u,1)   c │ u
    Any(LatinLetter) $StrickoutKey + [SHIFT            'U'] > Context(1) Index(Strickout,1) Index(Sup_U_,1)  c │ U_
    Any(LatinLetter) $StrickoutKey + [      LCTRL LALT 'U'] > Context(1) Index(Strickout,1) Index(Sup_ur,1)  c │ ur  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL LALT 'U'] > Context(1) Index(Strickout,1) Index(Sup_ur,1)  c │ ur  *
    Any(LatinLetter) $StrickoutKey + [      LCTRL RALT 'U'] > Context(1) Index(Strickout,1) Index(Sup_ur,1)  c │ ur  *
    Any(LatinLetter) $StrickoutKey + [      RCTRL RALT 'U'] > Context(1) Index(Strickout,1) Index(Sup_ur,1)  c │ ur  *
    Any(LatinLetter) $StrickoutKey + Any(vV)                > Context(1) Index(Strickout,1) Index(Sup_v,1)   c │ v
    Any(LatinLetter) $StrickoutKey + Any(wW)                > Context(1) Index(Strickout,1) Index(Sup_w,1)   c │ w
    Any(LatinLetter) $StrickoutKey + Any(xX)                > Context(1) Index(Strickout,1) Index(Sup_x,1)   c │ x
    Any(LatinLetter) $StrickoutKey + Any(yY)                > Context(1) Index(Strickout,1) Index(Sup_y,1)   c │ y
    Any(LatinLetter) $StrickoutKey + Any(zZ)                > Context(1) Index(Strickout,1) Index(Sup_z,1)   c │ z
c │ NB Stared '*' Rules are dublicates of one another, eg [RALT 'U'] & [RCTRL RALT 'U']  emit the same graphgeme.

c ╒==================================================================
c │ Shwa for single letter vowels.
    Any(Vowel) $ShwaKey + $ShwaKey > Context(1) Index(TPAshwa,1)

c ┌──────────────────────────────────────────────────────────────────
c │ Shwa for double letter vowels.
c │ NB Lowercase letters use a lower shwa.
    Any(VowelL) 'r' $ShwaKey + $ShwaKey > Context(1) $Shwa2L Context(2)
    'o'         'o' $ShwaKey + $ShwaKey > Context(1) $Shwa2L Context(2)
    'o'         'w' $ShwaKey + $ShwaKey > Context(1) $Shwa2L Context(2)
    'o'         'y' $ShwaKey + $ShwaKey > Context(1) $Shwa2L Context(2)

c ┌──────────────────────────────────────────────────────────────────
c │ NB All other possible combinations of case use the higher shwa.
    Any(Vowel) Any(rR) $ShwaKey + $ShwaKey > Context(1) $Shwa2U Context(2)
    Any(oO)    Any(oO) $ShwaKey + $ShwaKey > Context(1) $Shwa2U Context(2)
    Any(oO)    Any(wW) $ShwaKey + $ShwaKey > Context(1) $Shwa2U Context(2)
    Any(oO)    Any(yY) $ShwaKey + $ShwaKey > Context(1) $Shwa2U Context(2)

c ╒══════════════════════════════════════════════════════════════════
c │ Additional Rules for useful symbols.
c └──────────────────────────────────────────────────────────────────
c ┌──────────────────────────────────────────────────────────────────
c │ Chevrons
      "<"  + "<" > U+226A
      ">"  + ">" > U+226B
    U+226A + "<" > U+22D8
    U+226B + ">" > U+22D9

c ┌──────────────────────────────────────────────────────────────────
c │ Continuations
    '..' + '.' > '…'    c Ellipsis
    '::' + ':' > U+22EE c Ellipsis Vertical
    ',,' + ',' > U+22EF c Ellipsis Centre

c ┌──────────────────────────────────────────────────────────────────
c │ Legal
    '{'  Any(cC)         + '}' > '©'    c Copyright
    '{'  Any(rR)         + '}' > '®'    c Registered
    '{'  Any(tT) Any(mM) + '}' > '™'    c Trade Mark
    '{P'                 + '}' > U+2117 c Sound Recording Copyright

c ┌──────────────────────────────────────────────────────────────────
c │ Maths
    '{'    Any(xX) + '}' > '×'    c Multiply
    '{*'           + '}' > '×'    c Times

    '{-'           + '}' > '÷'    c Divide
    '{/'           + '}' > '÷'    c Divide

    '{+-'          + '}' > '±'    c Plus Minus
    '{-+'          + '}' > U+2213 c Minus Plus

    '{p'           + '}' > U+221D c Proportional
    '{~'           + '}' > '≈'    c Almost Equal

    '{+'           + '}' > U+224D c Equivalent NB '+' is Shift '='
    '{!+'          + '}' > U+226D c Not Equivalent

    '{!='          + '}' > '≠'    c Not Equal
    '{<>'          + '}' > '≠'    c Not Equal

    '{=='          + '}' > '≡'    c Identical
    '{!=='         + '}' > U+2262 c Identical

    '{<='          + '}' > '≤'    c Lest Than or Equal
    '{>='          + '}' > '≥'    c Greater Than or Equal

    '{I'           + '}' > '∞'    c Infinity
    '{N'           + '}' > '№'    c Numero

c ┌──────────────────────────────────────────────────────────────────
c │ Fractions
    '{1/4'  + '}' > '¼' c Quarter
    '{1/2'  + '}' > '½' c Half
    '{3/4'  + '}' > '¾' c Three Quarters

    '{1/7'  + '}' > '⅐' c One   Seventh

    '{1/9'  + '}' > '⅑' c One   Ninth

    '{1/10' + '}' > '⅒' c One   Tenth

    '{1/3'  + '}' > '⅓' c One   Third
    '{2/3'  + '}' > '⅔' c Two   Thirds

    '{1/5'  + '}' > '⅕' c One   Fifth
    '{2/5'  + '}' > '⅖' c Two   Fifths
    '{3/5'  + '}' > '⅗' c Three Fifths
    '{4/5'  + '}' > '⅘' c Four  Fifths

    '{1/6'  + '}' > '⅙' c One   Sixth
    '{5/6'  + '}' > '⅚' c Two   Sixths

    '{1/8'  + '}' > '⅛' c One   eighth
    '{3/8'  + '}' > '⅜' c Three eighths
    '{5/8'  + '}' > '⅝' c Five  eighths
    '{7/8'  + '}' > '⅞' c Seven eighths

    '{1/'   + '}' > '⅟' c Unitary  Fraction

c ┌──────────────────────────────────────────────────────────────────
c │ Greek
    '{a'           + '}' > 'α'    c Lowercase Alpha
    '{A'           + '}' > U+0391 c Uppercase Alpha
    '{b'           + '}' > 'β'    c Lowercase Beta
    '{o'           + '}' > 'ω'    c Lowercase Omega
    '{O'           + '}' > 'Ω'    c Uppercase Omega
    '{ohm'         + '}' > 'Ω'    c Ohm
    '{p'   Any(iI) + '}' > 'π'    c Lowercase Pi
    '{P'   Any(iI) + '}' > 'Π'    c Uppercase Pi
    '{S'           + '}' > 'Σ'    c Sigma / Sum
    '{u'           + '}' > 'μ'    c Lowercase Mu
    '{z'           + '}' > 'ω'    c Lowercase Omega
    '{Z'           + '}' > 'Ω'    c Uppercase Omega

c ┌──────────────────────────────────────────────────────────────────
c │ Symbols
    '{B'         + '}' > '∵'    c Because
    '{T'         + '}' > '∴'    c Therefore
    '{i'         + '}' > U+2139 c Information
    '{d'         + '}' > '†'    c Dagger
    '{D'         + '}' > '‡'    c Double Dagger
    '{l'         + '}' > U+2301 c Lightning
    '{'  Any(fF) + '}' > 'ƒ'    c Long f

c ┌──────────────────────────────────────────────────────────────────
c │ Faces
    '{:'  + '}' > U+E6A0 c Minimal
    '{))' + '}' > U+E6A1 c Very Happy
    '{)'  + '}' > U+E6A2 c Happy
    '{|'  + '}' > U+E6A3 c Neutral
    '{('  + '}' > U+E6A4 c Unhappy
    '{((' + '}' > U+E6A5 c Very Unhappy
    '{>'  + '}' > U+E6A6 c Angry
    '{>>' + '}' > U+E6A7 c Very Angry
    '{<'  + '}' > U+E6A8 c Sad
    '{<<' + '}' > U+E6A9 c Very Sad
    '{;'  + '}' > U+E6AA c Winking
    '{{'  + '}' > U+E6AB c Frowning
    '{/'  + '}' > U+E6AC c Confused
    '{!'  + '}' > U+E6AD c Supprised
    '{z'  + '}' > U+E6AE c Asleep
    '{c'  + '}' > U+E6AF c Cool

c ┌──────────────────────────────────────────────────────────────────
c │ Counters (Thermometer)
    '{t0' + '}' > U+E720
    '{t1' + '}' > U+E721
    '{t2' + '}' > U+E722
    '{t3' + '}' > U+E723
    '{t4' + '}' > U+E724
    '{t5' + '}' > U+E725
    '{t6' + '}' > U+E726
    '{t7' + '}' > U+E727
    '{t8' + '}' > U+E728
    '{t9' + '}' > U+E729

c ┌──────────────────────────────────────────────────────────────────
c │ Counters (Counter)
    '{c0' + '}' > U+E750
    '{c1' + '}' > U+E751
    '{c2' + '}' > U+E752
    '{c3' + '}' > U+E753
    '{c4' + '}' > U+E754
    '{c5' + '}' > U+E755
    '{c6' + '}' > U+E756
    '{c7' + '}' > U+E757
    '{c8' + '}' > U+E758
    '{c9' + '}' > U+E759

c ┌──────────────────────────────────────────────────────────────────
c │ Counters (Dominos)
    '{d0' + '}' > U+E760
    '{d1' + '}' > U+E761
    '{d2' + '}' > U+E762
    '{d3' + '}' > U+E763
    '{d4' + '}' > U+E764
    '{d5' + '}' > U+E765
    '{d6' + '}' > U+E766
    '{d7' + '}' > U+E767
    '{d8' + '}' > U+E768
    '{d9' + '}' > U+E769

c ┌──────────────────────────────────────────────────────────────────
c │ Counters (Square)
    '{s0' + '}' > U+E770
    '{s1' + '}' > U+E771
    '{s2' + '}' > U+E772
    '{s3' + '}' > U+E773
    '{s4' + '}' > U+E774
    '{s5' + '}' > U+E775
    '{s6' + '}' > U+E776
    '{s7' + '}' > U+E777
    '{s8' + '}' > U+E778
    '{s9' + '}' > U+E779

c ┌──────────────────────────────────────────────────────────────────
c │ Counters (Circle)
    '{o0' + '}' > U+E780
    '{o1' + '}' > U+E781
    '{o2' + '}' > U+E782
    '{o3' + '}' > U+E783
    '{o4' + '}' > U+E784
    '{o5' + '}' > U+E785
    '{o6' + '}' > U+E786
    '{o7' + '}' > U+E787
    '{o8' + '}' > U+E788
    '{o9' + '}' > U+E789

c ┌──────────────────────────────────────────────────────────────────
c │ Counters (Seven Segment)
    '{70' + '}' > U+E790
    '{71' + '}' > U+E791
    '{72' + '}' > U+E792
    '{73' + '}' > U+E793
    '{74' + '}' > U+E794
    '{75' + '}' > U+E795
    '{76' + '}' > U+E796
    '{77' + '}' > U+E797
    '{78' + '}' > U+E798
    '{79' + '}' > U+E799

c ┌──────────────────────────────────────────────────────────────────
c │ The Phonbic Alphabet (TPA) logo
    '{TPA' + '}' > U+E000 c TPA Icon

c │ End of MuM
c └─────────────────────────────────────────────────────────────────┘
c Processing complete, return to listening for a key press.

c □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
c Build constant Stores for Latin letters, TPA Graphemes, and Menus.
c □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

c ╔═════════════════════════════════════════════════════════════════╗
c ║ Special key combinations.                                       ║
c ╚═════════════════════════════════════════════════════════════════╝

c ┌──────────────────────────────────────────────────────────────────
c │ c Used in the menu Groups to through an error.
    Store(TextEffectors) [K_TAB] [K_?05]  [K_BKSP] [K_ENTER] [K_NPENTER] c [K_DEL]
    Store(CursorKeys)    [K_KP5] c [K_UP]  [K_END] [K_LEFT] [K_DOWN] [K_HOME]  [K_PGUP] [K_PGDN] [K_RIGHT]
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ The [K_<cursor keys>] has been commented out because, currently,▌
c ▐ if they are in the string 'CursorKeys' they no longer functions ▌
c ▐ when the TPA Keyboard is active.                                ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ The [K_KP5] is in the string so the string is not empty.        ▌
c ▐ It must be deleted when this issue is resolved.                 ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ┌──────────────────────────────────────────────────────────────────
c │ Used in the menu Groups to close a menu.
    Store(MenuCancel) [K_ESC] [K_BKSP]

c ┌──────────────────────────────────────────────────────────────────
c │ Used in GiM to remove the entire TPA Constructions.
    Store(Redo) [K_ESC] c [K_DEL]
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ The [K_DEL] above has been commented out because, currently,    ▌
c ▐ if it's in the string 'Redo' the DEL key no longer functions    ▌
c ▐ when the TPA Keyboard is active.                                ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ╔═════════════════════════════════════════════════════════════════╗
c ║ Latin constants.                                                ║
c ╚═════════════════════════════════════════════════════════════════╝
c ┌──────────────────────────────────────────────────────────────────
c │ Latin vowels.
    Store(vowelL) 'aeiou'
    Store(vowelU) 'AEIOU'
    Store(vowel)  Outs(vowelL) Outs(vowelU)
c ┌──────────────────────────────────────────────────────────────────
c │ English Keyboard symbols
    Store(Number) '0123456789'
    Store(Symbol) [K_oE2] '"' '" .,;:`!?&()[]{} \/=+-~_<>#*%^£€$|¦¬@'
    Store(AltGr)  'áéíóúÁÉÍÓÚ€¦'
c ▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌
c ▐ The '[K_oE2]' virtual key in a Mnemonic Layout is    ▌
c ▐ the only way I can find to access the 102 key.       ▌
c ▐ But it produces a Warning.                           ▌
c ▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌

c ┌──────────────────────────────────────────────────────────────────
c │ Latin letters.
    Store(LatinLetterLC) 'abcdefghijklmnopqrstuvwxyz'
    Store(LatinLetterUC) 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    Store(LatinLetter)    Outs(LatinLetterLC) Outs(LatinLetterUC)

c ┌──────────────────────────────────────────────────────────────────
c │ All displayable Letters, Numbers, & Symbols.
    Store(AllGlyphs) Outs(LatinLetter) Outs(Number) Outs(Symbol) Outs(AltGr)

c ╒══════════════════════════════════════════════════════════════════
c │ Lowercase / Capitals Stores so Any() commands can ignore the case of the Context.
    Store(aA) 'aA'
    Store(bB) 'bB'
    Store(cC) 'cC'
    Store(dD) 'dD'
   
    Store(eE) 'eE'
    Store(fF) 'fF'
    Store(gG) 'gG'
    Store(hH) 'hH'
   
    Store(iI) 'iI'
    Store(jJ) 'jJ'
    Store(kK) 'kK'
    Store(lL) 'lL'
    Store(mM) 'mM'
    Store(nN) 'nN'
   
    Store(oO) 'oO'
    Store(pP) 'pP'
    Store(qQ) 'qQ'
    Store(rR) 'rR'
    Store(sS) 'sS'
    Store(tT) 'tT'
   
    Store(uU) 'uU'
    Store(vV) 'vV'
    Store(wW) 'wW'
    Store(xX) 'xX'
    Store(yY) 'yY'
    Store(zZ) 'zZ'

c □■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□
c ╔═════════════════════════════════════════════════════════════════╗
c ║ TPA constants.                                                  ║
c ╚═════════════════════════════════════════════════════════════════╝
c ┌──────────────────────────────────────────────────────────────────
c │ TPA markup keys.
    Store(BarKey)       "_"
    Store(ArchKey)      ")"
    Store(SilentKey)    "*"
    Store(StrickoutKey) "="
    Store(GrahemeKey)   "_"
    Store(ShwaKey)      "`"
    Store(PointerKey)   "^"
    Store(TPAglue)      U+E010
    Store(TPAspace)     U+E020
    Store(TPAcursor)    U+E030
c ┌──────────────────────────────────────────────────────────────────
c │ TPAGraphemes.
    Store(TPA_a)   U+F001
    Store(TPA_A_)  U+F002
    Store(TPA_ar)  U+F003
    Store(TPA_b)   U+F004
    Store(TPA_c)   U+F005
    Store(TPA_ch)  U+F006
    Store(TPA_d)   U+F007
   
    Store(TPA_e)   U+F008
    Store(TPA_E_)  U+F009
    Store(TPA_er)  U+F010
    Store(TPA_f)   U+F011
    Store(TPA_g)   U+F012
    Store(TPA_h)   U+F013
   
    Store(TPA_i)   U+F014
    Store(TPA_I_)  U+F015
    Store(TPA_ir)  U+F016
    Store(TPA_j)   U+F017
    Store(TPA_k)   U+F018
    Store(TPA_l)   U+F019
    Store(TPA_m)   U+F020
    Store(TPA_n)   U+F021
    Store(TPA_ng)  U+F022
   
    Store(TPA_o)   U+F023
    Store(TPA_O_)  U+F024
    Store(TPA_oo)  U+F025
    Store(TPA_oo_) U+F026
    Store(TPA_or)  U+F027
    Store(TPA_ow)  U+F028
    Store(TPA_oy)  U+F029
   
    Store(TPA_p)   U+F030
    Store(TPA_q)   U+F031
    Store(TPA_r)   U+F032
    Store(TPA_s)   U+F033
    Store(TPA_sh)  U+F034
    Store(TPA_sh_) U+F035
    Store(TPA_t)   U+F036
    Store(TPA_th)  U+F037
    Store(TPA_th_) U+F038
   
    Store(TPA_u)   U+F039
    Store(TPA_U_)  U+F040
    Store(TPA_ur)  U+F041
    Store(TPA_v)   U+F042
    Store(TPA_w)   U+F043
    Store(TPA_x)   U+F044
    Store(TPA_y)   U+F045
    Store(TPA_z)   U+F046
c ┌──────────────────────────────────────────────────────────────────
c │ All valid TPA graphemes
    Store(TPAgrapheme) $TPA_a $TPA_A_ $TPA_ar $TPA_b   $TPA_ch $TPA_d                            \
                       $TPA_e $TPA_E_ $TPA_er $TPA_f   $TPA_g  $TPA_h                            \
                       $TPA_i $TPA_I_ $TPA_ir $TPA_j   $TPA_k  $TPA_l   $TPA_m  $TPA_n  $TPA_ng  \
                       $TPA_o $TPA_O_ $TPA_oo $TPA_oo_ $TPA_or $TPA_ow  $TPA_oy                  \
                       $TPA_p $TPA_q  $TPA_r  $TPA_s   $TPA_sh $TPA_sh_ $TPA_t  $TPA_th $TPA_th_ \
                       $TPA_u $TPA_U_ $TPA_ur $TPA_v   $TPA_w  $TPA_x   $TPA_y  $TPA_z
c ┌──────────────────────────────────────────────────────────────────
c │ TPA Punctuations
    Store(TPApunctuation) $TPAglue $TPAspace '-' c Used in GiM to remove TPA Constructions.

c ╒══════════════════════════════════════════════════════════════════
c │ TPA Markup Unicode codepoints.
    Store(BarL)   U+E011 c For a, e, o, u
    Store(BarIi)  U+E012 c For i, I
    Store(BarU)   U+E013 c For A, E, O, U
   
    Store(ArchO)  U+E014 c For double "o" graphemes only.
    Store(TieO)   U+E015 c For double "o" graphemes only.
    Store(Arch_)  U+E016 c For all other double letter graphemes with an Arch.
    Store(Tie_)   U+E017 c For all other double letter graphemes with a  Tie.

    Store(ShwaL)  U+E018 c For a, e, o, u
    Store(ShwaIi) U+E019 c For i, I
    Store(ShwaU)  U+E01A c For A, E, O, U
    Store(Shwa2L) U+E01B c For all Lowercase double letter vowels.
    Store(Shwa2U) U+E01C c For all Uppercase double letter vowels.
c ┌──────────────────────────────────────────────────────────────────
c │ TPAbar. The high Bar sysmbol for 'aeiou \ AEIOU'. NB "i" & "I" use a different Bar.
    Store(TPAbar) $BarL $BarL $BarIi $BarL $BarL \
                  $BarU $BarU $BarIi $BarU $BarU
c ┌------------------------------------------------------------------
c │ TPAshwa. The Shwa sysmbol for 'aeiou \ AEIOU'. NB "i" & "I" use a different Shwa.
    Store(TPAshwa) $ShwaL $ShwaL $ShwaIi $ShwaL $ShwaL \
                   $ShwaU $ShwaU $ShwaIi $ShwaU $ShwaU

c ╒══════════════════════════════════════════════════════════════════
c │ TPA strickout. The TPA Strickout sysmbol '='. Different for each Latin Letter.
c │                  a      b      c      d
c │                  e      f      g      h
c │                  i      j      k      l      m      n
c │                  o      p      q      r      s      t
c │                  u      v      w      x      y      z
c │                  Then the same but for capital letters.
    Store(StrickOut) U+E061 U+E062 U+E063 U+E064               \
                     U+E065 U+E066 U+E067 U+E068               \
                     U+E069 U+E06A U+E06B U+E06C U+E06D U+E06E \
                     U+E06F U+E070 U+E071 U+E072 U+E073 U+E074 \
                     U+E075 U+E076 U+E077 U+E078 U+E079 U+E07A \
                     U+E041 U+E042 U+E043 U+E044               \
                     U+E045 U+E046 U+E047 U+E048               \
                     U+E049 U+E04A U+E04B U+E04C U+E04D U+E04E \
                     U+E04F U+E050 U+E051 U+E052 U+E053 U+E054 \
                     U+E055 U+E056 U+E057 U+E058 U+E059 U+E05A

c ╒══════════════════════════════════════════════════════════════════
c │ TPA phonic clue superscripts table.
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z
    Store(Sup_a)   U+F401 U+F401 U+F301 U+F401   U+F401 U+F101 U+F501 U+F501   U+F201 U+F101 U+F301 U+F201 U+F801 U+F501   U+F401 U+F401 U+F401 U+F201 U+F301 U+F301   U+F401 U+F301 U+F501 U+F301 U+F301 U+F301      U+F601 U+F601 U+F501 U+F701   U+F401 U+F401 U+F601 U+F701   U+F201 U+F201 U+F601 U+F401 U+F801 U+F701   U+F701 U+F501 U+F701 U+F601 U+F401 U+F401   U+F701 U+F601 U+F801 U+F501 U+F501 U+F501 c a
    Store(Sup_A_)  U+F402 U+F402 U+F302 U+F402   U+F402 U+F102 U+F502 U+F502   U+F202 U+F102 U+F302 U+F202 U+F802 U+F502   U+F402 U+F402 U+F402 U+F202 U+F302 U+F302   U+F402 U+F302 U+F502 U+F302 U+F302 U+F302      U+F602 U+F602 U+F502 U+F702   U+F402 U+F402 U+F602 U+F702   U+F202 U+F202 U+F602 U+F402 U+F802 U+F702   U+F702 U+F502 U+F702 U+F602 U+F402 U+F402   U+F702 U+F602 U+F802 U+F502 U+F502 U+F502 c a_
    Store(Sup_ar)  U+F403 U+F403 U+F303 U+F403   U+F403 U+F103 U+F503 U+F503   U+F203 U+F103 U+F303 U+F203 U+F803 U+F503   U+F403 U+F403 U+F403 U+F203 U+F303 U+F303   U+F403 U+F303 U+F503 U+F303 U+F303 U+F303      U+F603 U+F603 U+F503 U+F703   U+F403 U+F403 U+F603 U+F703   U+F203 U+F203 U+F603 U+F403 U+F803 U+F703   U+F703 U+F503 U+F703 U+F603 U+F403 U+F403   U+F703 U+F603 U+F803 U+F503 U+F503 U+F503 c ar
    Store(Sup_b)   U+F404 U+F404 U+F304 U+F404   U+F404 U+F104 U+F504 U+F504   U+F204 U+F104 U+F304 U+F204 U+F804 U+F504   U+F404 U+F404 U+F404 U+F204 U+F304 U+F304   U+F404 U+F304 U+F504 U+F304 U+F304 U+F304      U+F604 U+F604 U+F504 U+F704   U+F404 U+F404 U+F604 U+F704   U+F204 U+F204 U+F604 U+F404 U+F804 U+F704   U+F704 U+F504 U+F704 U+F604 U+F404 U+F404   U+F704 U+F604 U+F804 U+F504 U+F504 U+F504 c b
    Store(Sup_c)   U+F405 U+F405 U+F305 U+F405   U+F405 U+F105 U+F505 U+F505   U+F205 U+F105 U+F305 U+F205 U+F805 U+F505   U+F405 U+F405 U+F405 U+F205 U+F305 U+F305   U+F405 U+F305 U+F505 U+F305 U+F305 U+F305      U+F604 U+F604 U+F504 U+F704   U+F404 U+F404 U+F604 U+F704   U+F204 U+F204 U+F604 U+F404 U+F804 U+F704   U+F704 U+F504 U+F704 U+F604 U+F404 U+F404   U+F704 U+F604 U+F804 U+F504 U+F504 U+F504 c ch
    Store(Sup_ch)  U+F406 U+F406 U+F306 U+F406   U+F406 U+F106 U+F506 U+F506   U+F206 U+F106 U+F306 U+F206 U+F806 U+F506   U+F406 U+F406 U+F406 U+F206 U+F306 U+F306   U+F406 U+F306 U+F506 U+F306 U+F306 U+F306      U+F606 U+F606 U+F506 U+F706   U+F406 U+F406 U+F606 U+F706   U+F206 U+F206 U+F606 U+F406 U+F806 U+F706   U+F706 U+F506 U+F706 U+F606 U+F406 U+F406   U+F706 U+F606 U+F806 U+F506 U+F506 U+F506 c ch
    Store(Sup_d)   U+F407 U+F407 U+F307 U+F407   U+F407 U+F107 U+F507 U+F507   U+F207 U+F107 U+F307 U+F207 U+F807 U+F507   U+F407 U+F407 U+F407 U+F207 U+F307 U+F307   U+F407 U+F307 U+F507 U+F307 U+F307 U+F307      U+F607 U+F607 U+F507 U+F707   U+F407 U+F407 U+F607 U+F707   U+F207 U+F207 U+F607 U+F407 U+F807 U+F707   U+F707 U+F507 U+F707 U+F607 U+F407 U+F407   U+F707 U+F607 U+F807 U+F507 U+F507 U+F507 c d
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z
    Store(Sup_e)   U+F408 U+F408 U+F308 U+F408   U+F408 U+F108 U+F508 U+F508   U+F208 U+F108 U+F308 U+F208 U+F808 U+F508   U+F408 U+F408 U+F408 U+F208 U+F308 U+F308   U+F408 U+F308 U+F508 U+F308 U+F308 U+F308      U+F608 U+F608 U+F508 U+F708   U+F408 U+F408 U+F608 U+F708   U+F208 U+F208 U+F608 U+F408 U+F808 U+F708   U+F708 U+F508 U+F708 U+F608 U+F408 U+F408   U+F708 U+F608 U+F808 U+F508 U+F508 U+F508 c e
    Store(Sup_E_)  U+F409 U+F409 U+F309 U+F409   U+F409 U+F109 U+F509 U+F509   U+F209 U+F109 U+F309 U+F209 U+F809 U+F509   U+F409 U+F409 U+F409 U+F209 U+F309 U+F309   U+F409 U+F309 U+F509 U+F309 U+F309 U+F309      U+F609 U+F609 U+F509 U+F709   U+F409 U+F409 U+F609 U+F709   U+F209 U+F209 U+F609 U+F409 U+F809 U+F709   U+F709 U+F509 U+F709 U+F609 U+F409 U+F409   U+F709 U+F609 U+F809 U+F509 U+F509 U+F509 c E_
    Store(Sup_er)  U+F410 U+F410 U+F310 U+F410   U+F410 U+F110 U+F510 U+F510   U+F210 U+F110 U+F310 U+F210 U+F810 U+F510   U+F410 U+F410 U+F410 U+F210 U+F310 U+F310   U+F410 U+F310 U+F510 U+F310 U+F310 U+F310      U+F610 U+F610 U+F510 U+F710   U+F410 U+F410 U+F610 U+F710   U+F210 U+F210 U+F610 U+F410 U+F810 U+F710   U+F710 U+F510 U+F710 U+F610 U+F410 U+F410   U+F710 U+F610 U+F810 U+F510 U+F510 U+F510 c er
    Store(Sup_f)   U+F411 U+F411 U+F311 U+F411   U+F411 U+F111 U+F511 U+F511   U+F211 U+F111 U+F311 U+F211 U+F811 U+F511   U+F411 U+F411 U+F411 U+F211 U+F311 U+F311   U+F411 U+F311 U+F511 U+F311 U+F311 U+F311      U+F611 U+F611 U+F511 U+F711   U+F411 U+F411 U+F611 U+F711   U+F211 U+F211 U+F611 U+F411 U+F811 U+F711   U+F711 U+F511 U+F711 U+F611 U+F411 U+F411   U+F711 U+F611 U+F811 U+F511 U+F511 U+F511 c f
    Store(Sup_g)   U+F412 U+F412 U+F312 U+F412   U+F412 U+F112 U+F512 U+F512   U+F212 U+F112 U+F312 U+F212 U+F812 U+F512   U+F412 U+F412 U+F412 U+F212 U+F312 U+F312   U+F412 U+F312 U+F512 U+F312 U+F312 U+F312      U+F612 U+F612 U+F512 U+F712   U+F412 U+F412 U+F612 U+F712   U+F212 U+F212 U+F612 U+F412 U+F812 U+F712   U+F712 U+F512 U+F712 U+F612 U+F412 U+F412   U+F712 U+F612 U+F812 U+F512 U+F512 U+F512 c g
    Store(Sup_h)   U+F413 U+F413 U+F313 U+F413   U+F413 U+F113 U+F513 U+F513   U+F213 U+F113 U+F313 U+F213 U+F813 U+F513   U+F413 U+F413 U+F413 U+F213 U+F313 U+F313   U+F413 U+F313 U+F513 U+F313 U+F313 U+F313      U+F613 U+F613 U+F513 U+F713   U+F413 U+F413 U+F613 U+F713   U+F213 U+F213 U+F613 U+F413 U+F813 U+F713   U+F713 U+F513 U+F713 U+F613 U+F413 U+F413   U+F713 U+F613 U+F813 U+F513 U+F513 U+F513 c h
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z
    Store(Sup_i)   U+F414 U+F414 U+F314 U+F414   U+F414 U+F114 U+F514 U+F514   U+F214 U+F114 U+F314 U+F214 U+F814 U+F514   U+F414 U+F414 U+F414 U+F214 U+F314 U+F314   U+F414 U+F314 U+F514 U+F314 U+F314 U+F314      U+F614 U+F614 U+F514 U+F714   U+F414 U+F414 U+F614 U+F714   U+F214 U+F214 U+F614 U+F414 U+F814 U+F714   U+F714 U+F514 U+F714 U+F614 U+F414 U+F414   U+F714 U+F614 U+F814 U+F514 U+F514 U+F514 c i
    Store(Sup_I_)  U+F415 U+F415 U+F315 U+F415   U+F415 U+F115 U+F515 U+F515   U+F215 U+F115 U+F315 U+F215 U+F815 U+F515   U+F415 U+F415 U+F415 U+F215 U+F315 U+F315   U+F415 U+F315 U+F515 U+F315 U+F315 U+F315      U+F615 U+F615 U+F515 U+F715   U+F415 U+F415 U+F615 U+F715   U+F215 U+F215 U+F615 U+F415 U+F815 U+F715   U+F715 U+F515 U+F715 U+F615 U+F415 U+F415   U+F715 U+F615 U+F815 U+F515 U+F515 U+F515 c I_
    Store(Sup_ir)  U+F416 U+F416 U+F316 U+F416   U+F416 U+F116 U+F516 U+F516   U+F216 U+F116 U+F316 U+F216 U+F816 U+F516   U+F416 U+F416 U+F416 U+F216 U+F316 U+F316   U+F416 U+F316 U+F516 U+F316 U+F316 U+F316      U+F616 U+F616 U+F516 U+F716   U+F416 U+F416 U+F616 U+F716   U+F216 U+F216 U+F616 U+F416 U+F816 U+F716   U+F716 U+F516 U+F716 U+F616 U+F416 U+F416   U+F716 U+F616 U+F816 U+F516 U+F516 U+F516 c ir
    Store(Sup_j)   U+F417 U+F417 U+F317 U+F417   U+F417 U+F117 U+F517 U+F517   U+F217 U+F117 U+F317 U+F217 U+F817 U+F517   U+F417 U+F417 U+F417 U+F217 U+F317 U+F317   U+F417 U+F317 U+F517 U+F317 U+F317 U+F317      U+F617 U+F617 U+F517 U+F717   U+F417 U+F417 U+F617 U+F717   U+F217 U+F217 U+F617 U+F417 U+F817 U+F717   U+F717 U+F517 U+F717 U+F617 U+F417 U+F417   U+F717 U+F617 U+F817 U+F517 U+F517 U+F517 c j
    Store(Sup_k)   U+F418 U+F418 U+F318 U+F418   U+F418 U+F118 U+F518 U+F518   U+F218 U+F118 U+F318 U+F218 U+F818 U+F518   U+F418 U+F418 U+F418 U+F218 U+F318 U+F318   U+F418 U+F318 U+F518 U+F318 U+F318 U+F318      U+F618 U+F618 U+F518 U+F718   U+F418 U+F418 U+F618 U+F718   U+F218 U+F218 U+F618 U+F418 U+F818 U+F718   U+F718 U+F518 U+F718 U+F618 U+F418 U+F418   U+F718 U+F618 U+F818 U+F518 U+F518 U+F518 c k
    Store(Sup_l)   U+F419 U+F419 U+F319 U+F419   U+F419 U+F119 U+F519 U+F519   U+F219 U+F119 U+F319 U+F219 U+F819 U+F519   U+F419 U+F419 U+F419 U+F219 U+F319 U+F319   U+F419 U+F319 U+F519 U+F319 U+F319 U+F319      U+F619 U+F619 U+F519 U+F719   U+F419 U+F419 U+F619 U+F719   U+F219 U+F219 U+F619 U+F419 U+F819 U+F719   U+F719 U+F519 U+F719 U+F619 U+F419 U+F419   U+F719 U+F619 U+F819 U+F519 U+F519 U+F519 c l
    Store(Sup_m)   U+F420 U+F420 U+F320 U+F420   U+F420 U+F120 U+F520 U+F520   U+F220 U+F120 U+F320 U+F220 U+F820 U+F520   U+F420 U+F420 U+F420 U+F220 U+F320 U+F320   U+F420 U+F320 U+F520 U+F320 U+F320 U+F320      U+F620 U+F620 U+F520 U+F720   U+F420 U+F420 U+F620 U+F720   U+F220 U+F220 U+F620 U+F420 U+F820 U+F720   U+F720 U+F520 U+F720 U+F620 U+F420 U+F420   U+F720 U+F620 U+F820 U+F520 U+F520 U+F520 c m
    Store(Sup_n)   U+F421 U+F421 U+F321 U+F421   U+F421 U+F121 U+F521 U+F521   U+F221 U+F121 U+F321 U+F221 U+F821 U+F521   U+F421 U+F421 U+F421 U+F221 U+F321 U+F321   U+F421 U+F321 U+F521 U+F321 U+F321 U+F321      U+F621 U+F621 U+F521 U+F721   U+F421 U+F421 U+F621 U+F721   U+F221 U+F221 U+F621 U+F421 U+F821 U+F721   U+F721 U+F521 U+F721 U+F621 U+F421 U+F421   U+F721 U+F621 U+F821 U+F521 U+F521 U+F521 c n
    Store(Sup_ng)  U+F422 U+F422 U+F322 U+F422   U+F422 U+F122 U+F522 U+F522   U+F222 U+F122 U+F322 U+F222 U+F822 U+F522   U+F422 U+F422 U+F422 U+F222 U+F322 U+F322   U+F422 U+F322 U+F522 U+F322 U+F322 U+F322      U+F622 U+F622 U+F522 U+F722   U+F422 U+F422 U+F622 U+F722   U+F222 U+F222 U+F622 U+F422 U+F822 U+F722   U+F722 U+F522 U+F722 U+F622 U+F422 U+F422   U+F722 U+F622 U+F822 U+F522 U+F522 U+F522 c ng
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z
    Store(Sup_o)   U+F423 U+F423 U+F323 U+F423   U+F423 U+F123 U+F523 U+F523   U+F223 U+F123 U+F323 U+F223 U+F823 U+F523   U+F423 U+F423 U+F423 U+F223 U+F323 U+F323   U+F423 U+F323 U+F523 U+F323 U+F323 U+F323      U+F623 U+F623 U+F523 U+F723   U+F423 U+F423 U+F623 U+F723   U+F223 U+F223 U+F623 U+F423 U+F823 U+F723   U+F723 U+F523 U+F723 U+F623 U+F423 U+F423   U+F723 U+F623 U+F823 U+F523 U+F523 U+F523 c o
    Store(Sup_O_)  U+F424 U+F424 U+F324 U+F424   U+F424 U+F124 U+F524 U+F524   U+F224 U+F124 U+F324 U+F224 U+F824 U+F524   U+F424 U+F424 U+F424 U+F224 U+F324 U+F324   U+F424 U+F324 U+F524 U+F324 U+F324 U+F324      U+F624 U+F624 U+F524 U+F724   U+F424 U+F424 U+F624 U+F724   U+F224 U+F224 U+F624 U+F424 U+F824 U+F724   U+F724 U+F524 U+F724 U+F624 U+F424 U+F424   U+F724 U+F624 U+F824 U+F524 U+F524 U+F524 c O_
    Store(Sup_oo)  U+F425 U+F425 U+F325 U+F425   U+F425 U+F125 U+F525 U+F525   U+F225 U+F125 U+F325 U+F225 U+F825 U+F525   U+F425 U+F425 U+F425 U+F225 U+F325 U+F325   U+F425 U+F325 U+F525 U+F325 U+F325 U+F325      U+F625 U+F625 U+F525 U+F725   U+F425 U+F425 U+F625 U+F725   U+F225 U+F225 U+F625 U+F425 U+F825 U+F725   U+F725 U+F525 U+F725 U+F625 U+F425 U+F425   U+F725 U+F625 U+F825 U+F525 U+F525 U+F525 c oo
    Store(Sup_OO_) U+F426 U+F426 U+F326 U+F426   U+F426 U+F126 U+F526 U+F526   U+F226 U+F126 U+F326 U+F226 U+F826 U+F526   U+F426 U+F426 U+F426 U+F226 U+F326 U+F326   U+F426 U+F326 U+F526 U+F326 U+F326 U+F326      U+F626 U+F626 U+F526 U+F726   U+F426 U+F426 U+F626 U+F726   U+F226 U+F226 U+F626 U+F426 U+F826 U+F726   U+F726 U+F526 U+F726 U+F626 U+F426 U+F426   U+F726 U+F626 U+F826 U+F526 U+F526 U+F526 c oo_
    Store(Sup_or)  U+F427 U+F427 U+F327 U+F427   U+F427 U+F127 U+F527 U+F527   U+F227 U+F127 U+F327 U+F227 U+F827 U+F527   U+F427 U+F427 U+F427 U+F227 U+F327 U+F327   U+F427 U+F327 U+F527 U+F327 U+F327 U+F327      U+F627 U+F627 U+F527 U+F727   U+F427 U+F427 U+F627 U+F727   U+F227 U+F227 U+F627 U+F427 U+F827 U+F727   U+F727 U+F527 U+F727 U+F627 U+F427 U+F427   U+F727 U+F627 U+F827 U+F527 U+F527 U+F527 c or
    Store(Sup_ow)  U+F428 U+F428 U+F328 U+F428   U+F428 U+F128 U+F528 U+F528   U+F228 U+F128 U+F328 U+F228 U+F828 U+F528   U+F428 U+F428 U+F428 U+F228 U+F328 U+F328   U+F428 U+F328 U+F528 U+F328 U+F328 U+F328      U+F628 U+F628 U+F528 U+F728   U+F428 U+F428 U+F628 U+F728   U+F228 U+F228 U+F628 U+F428 U+F828 U+F728   U+F728 U+F528 U+F728 U+F628 U+F428 U+F428   U+F728 U+F628 U+F828 U+F528 U+F528 U+F528 c ow
    Store(Sup_oy)  U+F429 U+F429 U+F329 U+F429   U+F429 U+F129 U+F529 U+F529   U+F229 U+F129 U+F329 U+F229 U+F829 U+F529   U+F429 U+F429 U+F429 U+F229 U+F329 U+F329   U+F429 U+F329 U+F529 U+F329 U+F329 U+F329      U+F629 U+F629 U+F529 U+F729   U+F429 U+F429 U+F629 U+F729   U+F229 U+F229 U+F629 U+F429 U+F829 U+F729   U+F729 U+F529 U+F729 U+F629 U+F429 U+F429   U+F729 U+F629 U+F829 U+F529 U+F529 U+F529 c oy
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z
    Store(Sup_p)   U+F430 U+F430 U+F330 U+F430   U+F430 U+F130 U+F530 U+F530   U+F230 U+F130 U+F330 U+F230 U+F830 U+F530   U+F430 U+F430 U+F430 U+F230 U+F330 U+F330   U+F430 U+F330 U+F530 U+F330 U+F330 U+F330      U+F630 U+F630 U+F530 U+F730   U+F430 U+F430 U+F630 U+F730   U+F230 U+F230 U+F630 U+F430 U+F830 U+F730   U+F730 U+F530 U+F730 U+F630 U+F430 U+F430   U+F730 U+F630 U+F830 U+F530 U+F530 U+F530 c p
    Store(Sup_q)   U+F431 U+F431 U+F331 U+F431   U+F431 U+F131 U+F531 U+F531   U+F231 U+F131 U+F331 U+F231 U+F831 U+F531   U+F431 U+F431 U+F431 U+F231 U+F331 U+F331   U+F431 U+F331 U+F531 U+F331 U+F331 U+F331      U+F631 U+F631 U+F531 U+F731   U+F431 U+F431 U+F631 U+F731   U+F231 U+F231 U+F631 U+F431 U+F831 U+F731   U+F731 U+F531 U+F731 U+F631 U+F431 U+F431   U+F731 U+F631 U+F831 U+F531 U+F531 U+F531 c q
    Store(Sup_r)   U+F432 U+F432 U+F332 U+F432   U+F432 U+F132 U+F532 U+F532   U+F232 U+F132 U+F332 U+F232 U+F832 U+F532   U+F432 U+F432 U+F432 U+F232 U+F332 U+F332   U+F432 U+F332 U+F532 U+F332 U+F332 U+F332      U+F632 U+F632 U+F532 U+F732   U+F432 U+F432 U+F632 U+F732   U+F232 U+F232 U+F632 U+F432 U+F832 U+F732   U+F732 U+F532 U+F732 U+F632 U+F432 U+F432   U+F732 U+F632 U+F832 U+F532 U+F532 U+F532 c r
    Store(Sup_s)   U+F433 U+F433 U+F333 U+F433   U+F433 U+F133 U+F533 U+F533   U+F233 U+F133 U+F333 U+F233 U+F833 U+F533   U+F433 U+F433 U+F433 U+F233 U+F333 U+F333   U+F433 U+F333 U+F533 U+F333 U+F333 U+F333      U+F633 U+F633 U+F533 U+F733   U+F433 U+F433 U+F633 U+F733   U+F233 U+F233 U+F633 U+F433 U+F833 U+F733   U+F733 U+F533 U+F733 U+F633 U+F433 U+F433   U+F733 U+F633 U+F833 U+F533 U+F533 U+F533 c s
    Store(Sup_sh)  U+F434 U+F434 U+F334 U+F434   U+F434 U+F134 U+F534 U+F534   U+F234 U+F134 U+F334 U+F234 U+F834 U+F534   U+F434 U+F434 U+F434 U+F234 U+F334 U+F334   U+F434 U+F334 U+F534 U+F334 U+F334 U+F334      U+F634 U+F634 U+F534 U+F734   U+F434 U+F434 U+F634 U+F734   U+F234 U+F234 U+F634 U+F434 U+F834 U+F734   U+F734 U+F534 U+F734 U+F634 U+F434 U+F434   U+F734 U+F634 U+F834 U+F534 U+F534 U+F534 c sh
    Store(Sup_sh_) U+F435 U+F435 U+F335 U+F435   U+F435 U+F135 U+F535 U+F535   U+F235 U+F135 U+F335 U+F235 U+F835 U+F535   U+F435 U+F435 U+F435 U+F235 U+F335 U+F335   U+F435 U+F335 U+F535 U+F335 U+F335 U+F335      U+F635 U+F635 U+F535 U+F735   U+F435 U+F435 U+F635 U+F735   U+F235 U+F235 U+F635 U+F435 U+F835 U+F735   U+F735 U+F535 U+F735 U+F635 U+F435 U+F435   U+F735 U+F635 U+F835 U+F535 U+F535 U+F535 c sh_
    Store(Sup_t)   U+F436 U+F436 U+F336 U+F436   U+F436 U+F136 U+F536 U+F536   U+F236 U+F136 U+F336 U+F236 U+F836 U+F536   U+F436 U+F436 U+F436 U+F236 U+F336 U+F336   U+F436 U+F336 U+F536 U+F336 U+F336 U+F336      U+F636 U+F636 U+F536 U+F736   U+F436 U+F436 U+F636 U+F736   U+F236 U+F236 U+F636 U+F436 U+F836 U+F736   U+F736 U+F536 U+F736 U+F636 U+F436 U+F436   U+F736 U+F636 U+F836 U+F536 U+F536 U+F536 c t
    Store(Sup_th)  U+F437 U+F437 U+F337 U+F437   U+F437 U+F137 U+F537 U+F537   U+F237 U+F137 U+F337 U+F237 U+F837 U+F537   U+F437 U+F437 U+F437 U+F237 U+F337 U+F337   U+F437 U+F337 U+F537 U+F337 U+F337 U+F337      U+F637 U+F637 U+F537 U+F737   U+F437 U+F437 U+F637 U+F737   U+F237 U+F237 U+F637 U+F437 U+F837 U+F737   U+F737 U+F537 U+F737 U+F637 U+F437 U+F437   U+F737 U+F637 U+F837 U+F537 U+F537 U+F537 c th
    Store(Sup_th_) U+F438 U+F438 U+F338 U+F438   U+F438 U+F138 U+F538 U+F538   U+F238 U+F138 U+F338 U+F238 U+F838 U+F538   U+F438 U+F438 U+F438 U+F238 U+F338 U+F338   U+F438 U+F338 U+F538 U+F338 U+F338 U+F338      U+F638 U+F638 U+F538 U+F738   U+F438 U+F438 U+F638 U+F738   U+F238 U+F238 U+F638 U+F438 U+F838 U+F738   U+F738 U+F538 U+F738 U+F638 U+F438 U+F438   U+F738 U+F638 U+F838 U+F538 U+F538 U+F538 c th_
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z
    Store(Sup_u)   U+F439 U+F439 U+F339 U+F439   U+F439 U+F139 U+F539 U+F539   U+F239 U+F139 U+F339 U+F239 U+F839 U+F539   U+F439 U+F439 U+F439 U+F239 U+F339 U+F339   U+F439 U+F339 U+F539 U+F339 U+F339 U+F339      U+F639 U+F639 U+F539 U+F739   U+F439 U+F439 U+F639 U+F739   U+F239 U+F239 U+F639 U+F439 U+F839 U+F739   U+F739 U+F539 U+F739 U+F639 U+F439 U+F439   U+F739 U+F639 U+F839 U+F539 U+F539 U+F539 c u
    Store(Sup_U_)  U+F440 U+F440 U+F340 U+F440   U+F440 U+F140 U+F540 U+F540   U+F240 U+F140 U+F340 U+F240 U+F840 U+F540   U+F440 U+F440 U+F440 U+F240 U+F340 U+F340   U+F440 U+F340 U+F540 U+F340 U+F340 U+F340      U+F640 U+F640 U+F540 U+F740   U+F440 U+F440 U+F640 U+F740   U+F240 U+F240 U+F640 U+F440 U+F840 U+F740   U+F740 U+F540 U+F740 U+F640 U+F440 U+F440   U+F740 U+F640 U+F840 U+F540 U+F540 U+F540 c U_
    Store(Sup_ur)  U+F441 U+F441 U+F341 U+F441   U+F441 U+F141 U+F541 U+F541   U+F241 U+F141 U+F341 U+F241 U+F841 U+F541   U+F441 U+F441 U+F441 U+F241 U+F341 U+F341   U+F441 U+F341 U+F541 U+F341 U+F341 U+F341      U+F641 U+F641 U+F541 U+F741   U+F441 U+F441 U+F641 U+F741   U+F241 U+F241 U+F641 U+F441 U+F841 U+F741   U+F741 U+F541 U+F741 U+F641 U+F441 U+F441   U+F741 U+F641 U+F841 U+F541 U+F541 U+F541 c ur
    Store(Sup_v)   U+F442 U+F442 U+F342 U+F442   U+F442 U+F142 U+F542 U+F542   U+F242 U+F142 U+F342 U+F242 U+F842 U+F542   U+F442 U+F442 U+F442 U+F242 U+F342 U+F342   U+F442 U+F342 U+F542 U+F342 U+F342 U+F342      U+F642 U+F642 U+F542 U+F742   U+F442 U+F442 U+F642 U+F742   U+F242 U+F242 U+F642 U+F442 U+F842 U+F742   U+F742 U+F542 U+F742 U+F642 U+F442 U+F442   U+F742 U+F642 U+F842 U+F542 U+F542 U+F542 c v
    Store(Sup_w)   U+F443 U+F443 U+F343 U+F443   U+F443 U+F143 U+F543 U+F543   U+F243 U+F143 U+F343 U+F243 U+F843 U+F543   U+F443 U+F443 U+F443 U+F243 U+F343 U+F343   U+F443 U+F343 U+F543 U+F343 U+F343 U+F343      U+F643 U+F643 U+F543 U+F743   U+F443 U+F443 U+F643 U+F743   U+F243 U+F243 U+F643 U+F443 U+F843 U+F743   U+F743 U+F543 U+F743 U+F643 U+F443 U+F443   U+F743 U+F643 U+F843 U+F543 U+F543 U+F543 c w
    Store(Sup_x)   U+F444 U+F444 U+F344 U+F444   U+F444 U+F144 U+F544 U+F544   U+F244 U+F144 U+F344 U+F244 U+F844 U+F544   U+F444 U+F444 U+F444 U+F244 U+F344 U+F344   U+F444 U+F344 U+F544 U+F344 U+F344 U+F344      U+F644 U+F644 U+F544 U+F744   U+F444 U+F444 U+F644 U+F744   U+F244 U+F244 U+F644 U+F444 U+F844 U+F744   U+F744 U+F544 U+F744 U+F644 U+F444 U+F444   U+F744 U+F644 U+F844 U+F544 U+F544 U+F544 c x
    Store(Sup_y)   U+F445 U+F445 U+F345 U+F445   U+F445 U+F145 U+F545 U+F545   U+F245 U+F145 U+F345 U+F245 U+F845 U+F545   U+F445 U+F445 U+F445 U+F245 U+F345 U+F345   U+F445 U+F345 U+F545 U+F345 U+F345 U+F345      U+F645 U+F645 U+F545 U+F745   U+F445 U+F445 U+F645 U+F745   U+F245 U+F245 U+F645 U+F445 U+F845 U+F745   U+F745 U+F545 U+F745 U+F645 U+F445 U+F445   U+F745 U+F645 U+F845 U+F545 U+F545 U+F545 c y
    Store(Sup_z)   U+F446 U+F446 U+F346 U+F446   U+F446 U+F146 U+F546 U+F546   U+F246 U+F146 U+F346 U+F246 U+F846 U+F546   U+F446 U+F446 U+F446 U+F246 U+F346 U+F346   U+F446 U+F346 U+F546 U+F346 U+F346 U+F346      U+F646 U+F646 U+F546 U+F746   U+F446 U+F446 U+F646 U+F746   U+F246 U+F246 U+F646 U+F446 U+F846 U+F746   U+F746 U+F546 U+F746 U+F646 U+F446 U+F446   U+F746 U+F646 U+F846 U+F546 U+F546 U+F546 c z
c │                a      b      c      d        e      f      g      h        i      j      k      l      m      n        o      p      q      r      s      t        u      v      w      x      y      z           A      B      C      D        E      F      G      H        I      J      K      L      M      N        O      P      Q      R      S      T        U      V      W      X      Y      Z

c ╒══════════════════════════════════════════════════════════════════
c │ TPA Silent Letters. The TPA Silent Letter sysmbol 'x'. Different for each Latin Letter.
c │                           a      b      c      d
c │                           e      f      g      h
c │                           i      j      k      l      m      n
c │                           o      p      q      r      s      t
c │                           u      v      w      x      y      z
c │                           Then the same but for capital letters.
    Store(SilentLetterMarkup) U+E114 U+E104 U+E113 U+E104               \
                              U+E114 U+E101 U+E115 U+E105               \
                              U+E102 U+E101 U+E103 U+E102 U+E118 U+E115 \
                              U+E114 U+E114 U+E114 U+E112 U+E113 U+E103 \
                              U+E114 U+E113 U+E115 U+E113 U+E113 U+E113 \
                              U+E106 U+E106 U+E105 U+E107               \
                              U+E104 U+E104 U+E106 U+E107               \
                              U+E102 U+E102 U+E106 U+E104 U+E108 U+E107 \
                              U+E107 U+E105 U+E107 U+E106 U+E104 U+E104 \
                              U+E107 U+E106 U+E108 U+E105 U+E105 U+E105
                           
c ╒══════════════════════════════════════════════════════════════════
c │ Pointer. A pointer sysmbol '^'. Different for each Latin Letter. NOT part of TPA.
c │                a      b      c      d
c │                e      f      g      h
c │                i      j      k      l      m      n
c │                o      p      q      r      s      t
c │                u      v      w      x      y      z
c │                Then the same but for capital letters.
    Store(Pointer) U+E214 U+E214 U+E213 U+E214               \
                   U+E214 U+E211 U+E215 U+E215               \
                   U+E212 U+E211 U+E213 U+E212 U+E218 U+E215 \
                   U+E214 U+E214 U+E214 U+E212 U+E213 U+E213 \
                   U+E214 U+E213 U+E215 U+E213 U+E213 U+E213 \
                   U+E216 U+E216 U+E215 U+E217               \
                   U+E214 U+E214 U+E216 U+E217               \
                   U+E212 U+E212 U+E216 U+E214 U+E218 U+E217 \
                   U+E217 U+E215 U+E217 U+E216 U+E214 U+E214 \
                   U+E217 U+E216 U+E218 U+E215 U+E215 U+E215

c □■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□■■□
c ╔═════════════════════════════════════════════════════════════════╗
c ║ Menu constants.                                                 ║
c ╚═════════════════════════════════════════════════════════════════╝
c ┌──────────────────────────────────────────────────────────────────
c │ Options for menus.
    Store(Choices2) '12'
    Store(Choices3) '123'
    Store(Choices4) '1234'
    Store(Choices5) '12345'
    Store(Choices6) '123456'
    Store(Choices7) '1234567'
    Store(Choices8) '12345678'
    Store(Choices9) '123456789'
c ┌──────────────────────────────────────────────────────────────────
c │ Menu elements.
    Store(LeftMenu)      U+276A c (
    Store(RightMenu)     U+276B c )
    Store(HalfSpace)     U+202F
    Store(NonBreakSpace) U+00A0

c ┌──────────────────────────────────────────────────────────────────
c │ Menu options 1-9 (subscript numbers).
    Store(Opn1) U+2081
    Store(Opn2) U+2082 
    Store(Opn3) U+2083
    Store(Opn4) U+2084
    Store(Opn5) U+2085
    Store(Opn6) U+2086
    Store(Opn7) U+2087
    Store(Opn8) U+2088
    Store(Opn9) U+2089
c ┌──────────────────────────────────────────────────────────────────
c │ Menus strings
c │ eg [ x1 x2 x3 ]
    Store(a_Menu) $LeftMenu $HalfSpace $TPA_a  $Opn1 $NonBreakSpace $TPA_A_  $Opn2 $NonBreakSpace $TPA_ar  $Opn3 $HalfSpace $RightMenu
    Store(c_Menu) $LeftMenu $HalfSpace $TPA_ch $Opn1 $NonBreakSpace $TPA_k   $Opn2 $NonBreakSpace $TPA_s   $Opn3 $HalfSpace $RightMenu
    Store(e_Menu) $LeftMenu $HalfSpace $TPA_e  $Opn1 $NonBreakSpace $TPA_E_  $Opn2 $NonBreakSpace $TPA_er  $Opn3 $HalfSpace $RightMenu
    Store(i_Menu) $LeftMenu $HalfSpace $TPA_i  $Opn1 $NonBreakSpace $TPA_I_  $Opn2 $NonBreakSpace $TPA_ir  $Opn3 $HalfSpace $RightMenu
    Store(n_Menu) $LeftMenu $HalfSpace $TPA_n  $Opn1 $NonBreakSpace $TPA_ng  $Opn2                               $HalfSpace $RightMenu
    Store(o_Menu) $LeftMenu $HalfSpace $TPA_o  $Opn1 $NonBreakSpace $TPA_O_  $Opn2 $NonBreakSpace $TPA_oo  $Opn3 \
                                                     $NonBreakSpace $TPA_oo_ $Opn4 $NonBreakSpace $TPA_or  $Opn5 \
                                                     $NonBreakSpace $TPA_ow  $Opn6 $NonBreakSpace $TPA_oy  $Opn7 $HalfSpace $RightMenu
    Store(s_Menu) $LeftMenu $HalfSpace $TPA_s  $Opn1 $NonBreakSpace $TPA_sh  $Opn2 $NonBreakSpace $TPA_sh_ $Opn3 $HalfSpace $RightMenu
    Store(t_Menu) $LeftMenu $HalfSpace $TPA_t  $Opn1 $NonBreakSpace $TPA_th  $Opn2 $NonBreakSpace $TPA_th_ $Opn3 $HalfSpace $RightMenu
    Store(u_Menu) $LeftMenu $HalfSpace $TPA_u  $Opn1 $NonBreakSpace $TPA_U_  $Opn2 $NonBreakSpace $TPA_ur  $Opn3 $HalfSpace $RightMenu
c ┌──────────────────────────────────────────────────────────────────
c │ TPA Graphemes, the output from the menu selection.
    Store(a_Char) $TPA_a  $TPA_A_ $TPA_ar
    Store(c_Char) $TPA_ch $TPA_k  $TPA_s
    Store(e_Char) $TPA_e  $TPA_E_ $TPA_er
    Store(i_Char) $TPA_i  $TPA_I_ $TPA_ir
    Store(n_Char) $TPA_n  $TPA_ng
    Store(o_Char) $TPA_o  $TPA_O_ $TPA_oo $TPA_oo_ $TPA_or $TPA_ow $TPA_oy
    Store(s_Char) $TPA_s  $TPA_sh $TPA_sh_
    Store(t_Char) $TPA_t  $TPA_th $TPA_th_
    Store(u_Char) $TPA_u  $TPA_U_ $TPA_ur

c □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
c End of file
c □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
# RE: Modifier keys behaving differently in different Group.   2016-03-22 07:54:47.840
Marc Durdin
Tavultesoft Staff
As far as I can tell, the reason this is happening is the AltGr store includes áéíóú which are mapped in the UK keyboard on Ctrl+Alt+A,E,I,O and U respectively. In order to match other letters, include [RALT 'n'] in the AltGr store (I have tested this and it worked).

This then causes the following rule to fire:
If(GiMFlag = 'Off') + Any(AllGlyphs) > Use(MuM)

Also: because the RAlt (or Ctrl+Alt) AEIOU keys on a UK keyboard generate áéíóú characters on the UK keyboard, they will also fire on nomatch rules.