Shortcuts for an impatient reader (you know who I mean!)

Goals (and current progress report), reading layout diagrams, “extra” keys. Do characters in layouts show all right?
Latin: Base layout, most frequent accented letters, using prefix keys, mogrifiers.
Cyrillic: Base (Russian) layout, second tier: Slavic, XIX century Russian, and (some) Kazakh, third tier: (8859-5; base Church Slavonic; X11-supported: Kazakh/Tatar/Ossetian/Chuvash/Udmurt/Komi/Yakut/Kalmyk/Bashkirian/Mari), “exotics”: titlo-forms, 10ⁿ-combiners, etc, rest: ԡꙣꙥꚁ.
Greek: Base layout, monotonic and symbols, polytonic, numeric, longs and shorts, Zodiak, Coptic and paleo-Greek.
Hebrew: Base layout, consonants, digraphs, vowels, layout of the rest of characters, cantillation, dial-a-niqqud. Difference with math Hebrew-symbols..
Accessing “other” scripts without changing personality.
Symbols: most frequent, Currencies and Business symbols, fractions, sub/superscripts, math symbols with a lot of variants vs. the rest, arithmetic operations, arrows, box-drawing characters, dial-a-dash and dial-a-whitespace, nice dashes, dashes again, IPA/Zhuang tone marks, DOS cp437.
Math flavors of Latin: common, all double-struck/script/fraktur, and more.
Compose key: basics, 3 implemented flavors.

izKeys layouts: visual diagrams

The diagrams below illustrate the most basic ways to use the izKeys (ee-zee-keys) keyboard layout. How to access the other keys? The info may be extracted from the table summaries of layout of the Latin and Cyrillic personalities (but these tables do not explicitly list the heuristics…). For more information, see this (you may also want to inspect the documentation of the toolset used to generate this layout: here, and here, but they are currently in a complete disarray).

Here, we almost completely ignore the questions how to enter math/IPA/UPA symbols (about a thousand is possible!), and exotic Latin letters (more than a thousand of them) — let us just mention that the concepts/mneumonics helping one remember many of them are “mogrification rules”, “GreenKeys/RipeKeys” and “BlueKeys”. (The reasons for a character to appear on a particular key are listed in the mouse-popups when hovering on characters; these terms appear there. See also the popups for the column headers in this table.) With the exception of the last section, what we discuss here is restricted to the most frequent Latin letters, as well as input of Cyrillic/Greek, and of Business symbols.

When a certain key or key combination is undefined, the keyboard produces the visible bell symbol . So one should not be surprised that this is the most frequent character in the diagrams below! Remember that our keyboard layout are optimized for ease-of-remembering, not for ease-of-finger-movements. (We completely ignore the “base row” and other terms of mechanics of finger movement. Anyway, it looks like “advantages” of keyboards optimized for kinesthetic might be exagerrated anyway: at least, more or less objective research is inconclusive.)

The diagrams are color-coded using outlines, character color, and character background. Outlines relate to mnumonic rules; green and blue outlines indicate that either mneumonics are based on the position of this character, or the characters are otherwise important, thus made easily guessable. On the opposite end, characters with brown outlines are hopeless to guess using heuristics, one must memorize them. The key assignment of characters with yellow outlines cannot be guessed immediately, but there is an approximate heuristic: it assignes a few possible positions to the character, so one can quickly find the needed key using 3–4 experiments; these heuristics are either explicitly mentioned, or related to sound/shape of character w.r.t. the Latin key it is put in.

We use white outline to indicate symbols „ ‚“ ‘ ” ’« ‹ » ›‐ – — ― ‒ ‑〃 ‵ ‶ ‷ ′ ″ ‴ ⁗ ´ which were replaced by “surrogate” symbols in the typewriter age (more about this below). In all diagrams, yellow characters denote prefix keys; other colors indicate visual bells, and characters assigned to AltGr-keys (when many characters are displayed on the same key). The meaning of background colors is the same as in here and here. This frame denotes letters which have 3 case forms (lc/uc/titlecase); and this frame indicates that the uppercase is encoded as two (or more) Unicode characters. Sometimes the whole key also has a special background color; this indicates that the positioning heuristic is “based on diagonals” — more details below.

Some prefix characters come in pairs; the secondary one acts as the primary combined with AltGr-inversion of the following keypress — so PREFIX2 CHAR acts as PREFIX1 AltGr-CHAR. This is indicated by the extra red outline on a with-Shift-pair (or on the secondary prefix). (See base Greek layouts for the examples.)

Trivia: to show this page correctly, one may need to install extra fonts (Deja vu, junicode, Symbola; unifont has a very good coverage, but it also [as of 2011] has a special glyph inserted (explicitly — instead of using .notdef!) for missing codepoints — and this severely interacts with a choice of better fonts). Some fonts have some glyphs wrong (I have seen wrong directions of arrows, wrong choice of OXIA vs VARIA, or DASIA vs PSILI — especially on ρ). Sometimes one should better zoom in (Control-MouseWheel, Control-+, or from menu; Control-0 to return back) in browser to see details/differences of diacritic marks.

Note that some characters which may be entered with this layout are not included in any of mentioned fonts, so have a chance to be shown as boxes (empty, or with hex code inside). But if you cannot show them, they are probably not very usable to you anyway, right? If you do have fonts on your system which support these characters (put mouse on top of a character, and an explanation will pop up), read instructions how to fix this — at least in Firefox.

The most basic Layout

/* To be auto-generated */
Hover mouse over left/right Shift to switch to “Un-shifted”/“Shifted” view; press key to flip.

Note that each colored letter-diagonal contains exactly one vowel (outlined in blue); the diagonals guide the quick-access to the ¨,´,`-accented vowels (discussed in the next section).

Are the etched symbols on your keys very different? Tough luck… — you will need to mentally rearrange the diagrams to suit your keyboard. (Keyboard drivers access keyboards basing on key scancodes, which mostly depend on the position of the key, not on what is drawn on it.) The mneumonics used here depend a lot on the etchings being as above. Trivia: ASCII encoding has SPACE and 94 other characters defined; this leads to 47 keys on the standard US keyboard (2 characters per key). The main variation in layout is the position of the \| key; sometimes Enter⏎/←Backspace keys have a different shape, and this key is moved about to compensate. Trivia: the position of this key differed on the initial XT/AT/Enhanced keyboards; apparently, keyboard manufacturers think that this gives them a license to freely move it around…

ISO keyboards have one “extra” key. Above, it is the other key \| (shown here to the left of SPACE). Its position varies a lot between keyboards; sometimes it is marked as < >; sometimes it is positioned to the left of Z; on many US keyboards it is omitted altogether. These variations in position and markup do not matter — if the key is present, it behaves as indicated; we do not put “important” characters at this position. Likewise, Brazilian ABNT and Japanese JIS keyboards have yet another key on alphanumeric rows: on ABNT it is next to the right Shift, on JIS next to Backspace. (Our diagrams do not show this key at all; for this layout, we do not plan to use it other than as a Compose key.)

Base Latin layout when AltGr is pressed

All accented letters in this diagram are also available on easier-to-remember multi-key sequences (starting with prefix keys); so remembering positions of the most of characters in this diagram is not required: they are needed only to speed up the typing.

Pay attention to the difference between letters and symbols — we call them characters when we do not care about the distinction. “Letters” are parts of words; all the other characters are “symbols”. Symbols with white outlines denote “no-nonsense variants” of surrogate typewriter symbols ", ', `, - etc. (Trivia: With invention of typewriters, many [tens?] of different symbols where jammed into one “surrogate” symbol to economize on the number of keyboard's keys; essentially, surrogates make no sense standalone. For decades. we were forced to use surrogates and deduce what was actually meant basing on context; nowadays, we can do better; see -This-, “this”, this′, this ″, `that´, ‘that’ and T H A T.)

/* To be auto-generated */

For this particular diagram: characters with green or blue outline are those for which people can immediately guess their position on keyboard. Since easily-guessable, these positions are a very valuable property, and are “set in stone” — they win in conflicts with other positioning heuristics. (Possible exceptions on guessability are ºª§; but if you saw the diagram above once, you have a good chance to guess them anyway. Euro € is at the position which is etched on many keyboards nowaday (compare with this discussion).

Trivia: in earlier versions of this keyboard, · and § were on 7/& key; then I discovered Blickensderfer No. 5 (1896)…. This was convergence in action! (But now I think that √ is much too similar to 7 to miss an opportunity….)

On the opposite end of the guessability scale are letters with brown outlines: they take ad hoc positions which must be memorized. In between on the guessability scale are letters on the colored diagonals (two ⤡-diagonal on the left-hand side, and four ⤢-diagonals on the right-hand side) — they may be calculated using a simple rule. Each colored diagonal has one vowel on the “base” layer, and three ¨,´,`-accented variants of this vowel are put on 3 keys on the diagonal — from top to bottom.

Example: observe the red diagonal on the right with ü/ú/ù.

Unfortunately, this diagonal is the only “clean” example: the other diagonals contain letters which are “set in stone”, so the by-diagonal rule loses. When a very important letter loses in playing chicken, it yellows (look for yellow outlines) and is “bumped away” one position across the diagonal (preferably down, if possible). (Observe the red arrows!) The extremely rare letters ë, and ï are just discarded; the more frequent ì withers and becomes brown-outlined.

Summary: How to type Blue/Green outlined characters may be guessed immediately. For no-outline characters on colored diagonals there is a very simple rule to locate them. If one also remembers the “bumped away” rule, one can locate 4 letters with yellow outlines. If one wants to quick-type the remaining 3 brown-outline letters (and no-outline symbols), one must memorize them.

Trivia: Did you notice = upper-cased ß? (These are different letters!) Unicode has many wonders... (this link leads to an extremely long thread!). Why ê is blue? It is the only set-in-stone accented vowel...

A remark on prefix key. The color on the diagram indicates that pressing AltGr-$ produces a prefix key. It also shows that this prefix key is denoted as £; but keep in mind that using the symbol £ here is just a notational convention!

By itself, a prefix key does not make any sense. What is important to know is how to describe succintly the semantic of “what it does with the following letter/symbol/etc”; one may ask what happens when it is followed by space; and one may ask what happens when it is pressed twice. The answers are: it finds business-symbol/currency-symbol which matches best the given letter, or modifies the symbol by adding a vertical line; it produces ; it produces £. Hence the notation above is quite appropriate.

In general, the prefix keys of this layout try to do likewise: when we denote a prefix key by a certain diacritic mark, we want: prefix + a letter (or AltGr-letter) produces the letter+diacritic with the diacritic as close to “this notation” as possible; prefix + a symbol mogrifies the symbol in a way similar to the name of the diacritic (say, acute may make “with sharper corners” version of the symbol, and ring-above may produce a “rounded” version); following it by SPACE produces the standalone diacritic character; and typing it twice produces the corresponding combining character. (Moreover, one can produce more standalone variants by modifying SPACE by Shift or AltGr; one can get more combining variants by prefix + ' — and one can use Shift/AltGr on Shift or '.) (See this summary.)

Base Cyrillic layout

The base layout of Cyrillic personality follows the only phonetic layout which has a remote chance to be called “standard” — one from X11. Letters with brown outline must be memorized. Positions of letters with green outline can be guessed with two tries (but if forgotten, they may lead to a [quickly going away] confusion):

/* To be auto-generated */

The most important other thing to remember is that if a letter (say, Ю) replaces ASCII symbols (such as ` and ~), the symbols are available via combination with AltGr. And Ъ/Ё are available also by combining AltGr with Ь/Е. (Compare with AltGr-combined diagram below, after the next diagram.)

Base Cyrillic layout as visible from Latin personality after AltGr-Space (so “RipeKeys” replace shared symbols; colors as in the previous diagram).

/* To be auto-generated */

AltGr Cyrillic layout

In izKeys layout, the cyrillic letters are prioritized into classes; the higher the priority, the easier is the letter to key in. In the top priority class are modern Russian letters; one can enter them using only the Shift modifier. The second-class citizens may be keyed in using an extra AltGr-modifier. For third-class citizens, one uses the AltGr-' prefix; for the fourth-class citizens, the key after this prefix requires AltGr-modifier. Finally, there are certain “exotics”; they are entered with AltGr-^ prefix (possibly with AltGr-modifier on the next keypress).

One of the ideas of the izKeys layout is that when the “priority class” of a letter is known, one should be able to immediate guess on which key this letter is present. (There are exceptions, but they are in a very narrow minority.) What remains is knowing how the priority is assigned to letters; this is explained near the diagram of every class.

Here is the base Cyrillic face (essentially, consisting of Russian letters) with AltGr-bindings added in red. These second-class citizens are from the modern Slavic Cyrillic-based languages, XIX century Russian, and Kazakh:

/* To be auto-generated */
Hover mouse over left/right Shift to switch to “Un-shifted”/“Shifted” view; press key to flip.

Color codes are as above; positions of the letters Ѣ,Є,Ә are artificial, but still may be guessed on the third try, while positions of Ѓ and Ј must be memorized (heuristics: Ѓ overflows down from Г=G; the position of Ј “is questionable”. For the rest of the letters, if one knows that they are indeed prioritized to be on AltGr-bindings, one can immediately guess on which key. (And to know this is simple: all of the characters described above are present, except for Kazakh Ғ Ң Ө Ү Ұ [available on “extras” Cyrillic layout — with Ғ overflowing left to F, and Ұ requiring AltGr]; the only other characters present are Ԗ Ѡ Ѱ and PALOCHKA Ӏ.)

Prefix keys are in yellow. In addition to £ (which is Business-prefix=AltGr-$ — same as on Latin face), two Cyrillic-specific prefix keys are: AltGr-' introduces “extra” Cyrillic letters (and fractions), and AltGr-^ introduces titlo-forms and “exotic” Cyrillic characters. As usual, pressing the prefix twice produces the corresponding combining character: the stress mark and titlo.

The “prefixed” Cyrillic layouts

The “extras” Cyrillic layout (the prefix is AltGr-' in Cyrillic personality; double-AltGr-SPACE in Latin):

/* To be auto-generated */

Letters with yellow overline are not in the most obvious positions, but at least there is some hope to remember some heuristics. This includes ҼҾ (Abkhazian CHEs) and ҒӺ (stroked GHE's) which “slided to the left” from Ч and Г, and Komi Ԋ on comma [;-].

This face contains the “leftover” characters of ISO 8859-5, Church Slavonic (except letters-titlo-form and powers-of-10), and the characters in flavors of ru on X11 (Kazakh, Tatar, Ossetian, Chuvash, Udmurt, Komi, Yakut, Kalmyk, Bashkirian, Mari). The iotized letters are of decreased priority; yet more penalized are latinized, with-diaresis, hooked, and stroked variants. (Of two letters competing for the same position, the more penalized one becomes red.)

The rules to enter fractions are very simple: AltGr-' DIGIT enters a fraction with the digit in denominator; AltGr-' Shift-DIGIT does the same for numerator. If another precomposed fraction with the same denominator/numerator is available in Unicode, add AltGr modifier to access the other fraction. Example: there are four fractions with denominator 8: ⅛, ⅜, ⅝, ⅞ (in order of numerators). Now AltGr-' 8 accesses the first one, ⅛; pressing AltGr-' AltGr-8 accesses the second one, ⅜. All precomposed fractions can be entered this way (Example: ⅝, ⅞ may be entered via digit-in-numerator AltGr-' AltGr-% and AltGr-' &).

The rule above is for Cyrillic personality. From Latin personality, either prepend switch-to-Cyrillic prefix AltGr-SPACE, or replace AltGr-' with lCtrl-lAlt-: or rCtrl-AltGr-: or lCtrl-Mnu-/. Trivia: there is another way to enter Unicode fractions: use superscript digits for the numerator, subscript digits for the denominator, and separate them by FRACTION SLASH available via GreenKey Shift-SPACE / (as well as on AltGr-/ SPACE) to get something like ¹²⁄₃₅ (the very narrow “bounding box” of FRACTION SLASH ensures the nice look); superscript/subscript digits are on Green/Ripe, hence may be also entered with lCtrl-lAlt/ApplicationMenu.

Titlo-forms, power-of-10 multipliers, and “exotics” (the prefix is AltGr-^ in Cyrillic personality; triple-AltGr-SPACE in Latin):

/* To be auto-generated */

Note the Shift-trick: since titlo-forms are not available in upper-case, we hijack the Shift-position and put the titlo-form of an “extra” letter (one on AltGr-' LTR) to AltGr-^ Shift-LTR; see keys Ю and Я above. Also, note exceptions: ◌ⷵ on S, titlo-Ꙉ (djerv) ◌ⷸ on D, ᴫ (small capital л) on L, and ᵸ on N (which is a “modifier letter”, not a “combining letter”). Power-of-10 multipliers are available on the corresponding digit keys 3...8. (Trivia: all multipliers but “thousands” ҂ are combining.) Ocular О's ꙨꙪꙬꙮ are on digits 1...3 according to their multiplicity (with or without AltGr; note that here 3 means “many” ;-). In addition to these exceptions, yellow outlines are on heuristically good ZEMLYA/DZELO Ꙁ/Ꙃ on 0, Ҹ which “slided left”, and Komi letters NJE/ZJE/DZJE on comma ;-) (here — and on the “extra” layer).

Trivia: Many paleo-Slavonic “exotics” were championed into Unicode by Balkan scholars; it is not surprising that the approach of these scholars was different from what was traditional for East and North Slavic studies. Nowadays there is a hope to get a consensus on how to transcribe North Slavic manuscripts into Unicode; see this proposal, its part II, and this page. (There is widespread misunderstanding of how to use еЕ/єЄ for paleo-Slavonic: these are for ”есть узкий/широкий”.)

Base Greek layout + monotonic + polytonic + Coptic

Base Greek layout as visible from Latin Personality (on GREEN=Shift-SPACE prefix, so GreenKeys replace symbols):

/* To be auto-generated */

Positions of Greek letters with brown outline must be memorized (heuristics: θ and Q are both O with an extra stroke; y is one half of ψ). The rest of base letters is guessable: either phonetically, or, if conflicts appear, visually (the base letters coincide with the Galaxy layout; the mixup of χ/Χ (chi; on x) and ξ/Ξ (xi; on c) is unfortunate, but it is shared by many other layouts). Two green-outline letters pre-combined with diaeresis must also be memorized if one wants to enter monotonic Greek; ; and ? give the Greek flavors (Trivia: the latter is deprecated — use the Latin ; instead).

Polytonic Greek is produced with 3 prefix keys \, [ and ]. Pay attention to vowels (blue outline) above, one on every color-tinted diagonal; compare with this GREEK [ layout (with AltGr-bindings added in red):

/* To be auto-generated */

(For a moment, ignore the key 3#.) Observe that all characters have aspiration ῾ (visually similar to [), that the other accents depend on the row and color (black or red), and the base letter depends on the (colored) diagonal.

The rule: Prefix \ with a key on a diagonal of a vowel produces the accented vowel: the row determines the accent: the top letter row gives the polytonic variant ´ of acute accent (OXIA), the low letter row gives the grave accent ` (VARIA), and the number row gives the circumflex accent ῀ (PERISPOMENI). The middle letter row gives none (of these 3 accents). Combine the letter with AltGr to obtain the combinations with diaeresis (DIALYTIKA; applicable only to ι/Ι and υ/Υ) or iotization (YPOGEGRAMMENI=ͺ or PROSGEGRAMMENI=ι — on lower/upper case). To combine with aspiration, replace \ by one of [ and ] — depending on the shape of aspiration accent: ῾ (DASIA) and ᾿ (PSILI). Rho ρ/Ρ takes aspiration signs as if it were a vowel; the corresponding “diagonal” contains the only key `.

Example: GREEK [ AltGr-@ produces ᾯ (here GREEK is GREEN=Shift-SPACE). And here is why: @ is Shift-2; due to Shift, the result is in uppercase; the key with 2 and @ is on the green diagonal which contains the vowel ω/Ω; hence one gets an accented Ω. It is iotized (note ι-like diacritic below) since @ was combined with AltGr; the key with 2 and @ is on the number row, which adds the circumflex (and in Greek it looks like ~); finally, since we used [ “instead of” \, this adds the aspiration ῾ (DASIA) looking like [.

Observe the red symbols on the rightmost red diagonal: they are standalone polytonic diacritics! (The diagram above is as seen from Latin personality; from Cyrillic one there are usual complications related to many ways to produce ёЁъЪ — for example, the key # does not access number-symbol ͵ as it does from the Latin personality.)

Summary for standalone: to enter a standalone polytonic diacritic, pretend that you put it on (non-existent) OMICRON-DIALYTIKA (in other words, the last key in the sequence should be AltGr- on a key in the rightmost red diagonal — the diagonal of . DOT). What to do with DIALYTIKA/YPOGEGRAMMENI/PROSGEGRAMMENI which would require a “second” AltGr modifier? Replace it by Shift! (Exceptions: removing this Shift converts the standalone PROSGEGRAMMENI to (surprise!) YPOGEGRAMMENI; and Shift converts PSILI to CORONIS. There are other ways to get combinations like DIALYTIKA AND VARIA: for example, by adding GRAVE to DIAERESIS via AltGr-` AltGr-;. Trivia: Note also that there is no standalone DIALYTIKA symbol; use the standalone ¨ DIAERESIS via AltGr-; SPACE instead.)

Numeral signs are accessible on keys 3 and #. On the prefix / they are “as expected”: 3 gives the lower one, and # the “normal” one (duplicated on the prefix ]). (On the prefix [ this pair is inverted, to fight with ъЪёЁ-confusion in access from the Cyrillic personality.) To join them, standalone monotonic diacritics ΄,΅ are available on AltGr-3 and AltGr-#.

Macron and breve: Observe that by the rules above, GREEK \ LTR with LTR from the middle letter row would produce an unaccented vowel. To avoid waste, they instead produce either a vowel with breve (VRACHY) or with macron (vowels α/υ/ι may take them — the other vowels already have separate forms for shorter/longer variants), or LUNATE variant symbol ϵ for ε (on d). To get breve, proceed as if you want to get unaccented vowel; to get macron, do the same on the next key to the right or left (so a/j/k produce ᾰ/ῠ/ῐ, s/h/l produce ᾱ/ῡ/ῑ, and d makes ϵ). To clarify, here is the diagram of GREEK \ (observe also Zodiak symbols on Shift-NUMBERS row):

/* To be auto-generated */

Trivia: Numeration of Zodiak constellations starts on the spring equinox; so the first 20 days of Nth month is in the Zodiak sign number N-3 or N+9. We put 10th,11th,12th signs on keys 0 ), - _ and = +; to get 13 for the price of 12, the sign ⛎ (for the not-Zodiacal but ecliptical constallation Ophiuchus) is put on ~.

Monotonic and “special” Greek letters can be accessed on the base face by combining with AltGr. On vowels, this adds tonos ΄ (acute accent). On consonants, it produces special forms (final, scientific etc) and archaic letters. Here is the Greek face with AltGr-bindings added in red:

/* To be auto-generated */

Observe kai ϗ — this is one of exceptional cases when a lower-case letter is put in a Shifted position. (As a case pair, kai is available via the “Coptic prefix” `.) Note also that red letters with yellow outline are guessable by simple heuristics (“one of the sounds” for stigma Ϛ, visual for the rest). (Moreover, digamma Ϝ is “on top of” Ψ which “is a di-Y”, and we use ϔ as “the shifted variant” of ΰ.)

The prefix key ` allows one to enter Coptic (and multitude of others Greek-related symbols).

  1. Entering full analogues of Greek letters does not require additional explanations (including SOU/so/su Ⲋ, SHIMA/tsheema/qima Ϭ, and SAMPI/none/psis nše Ⳁ which are analogues of stigma Ϛ on AltGr-t, koppa Ϟ/Ϙ on AltGr-Z/C and sampi Ϡ on AltGr-x);
  2. two “empty” slots at J/V (were Ϊ/Ϋ) are taken by genga/ḏanḏia/GANGIA Ϫ on j, fay/fai/FEI Ϥ on v (or AltGr-f);
  3. the other letters without Greek analogue are on AltGr-LTR where the LTR is the initial letter of the name on the Wikipedia page of 2012
  4. with exceptions for: LTR is the first letter of the Unicode name for DEI/tee/ti Ⲇ and KHEI/khay/xai Ⲕ.

Here is the AltGr-GREEK ` layout with AltGr-bindings added in red:

/* To be auto-generated */

Note the Coptic dash (plus more dashes), DOS' dingbats for Control-range characters (on Shift-DIGITs, and AltGr--, AltGr-_), and (obsolete) Zhuang tone marks on AltGr-DIGITS (from 2 to 6), and stroked + latinized ι/υ/λ as ᵼ/ᵿ/ƛ. Additional “semi-randomly assigned” AltGr-letters: Bactrian sho Ϸ on b; ½-H heta Ͱ/ͱ on 1; yot ϳ on j; Pamphylian digamma Ͷ/ͷ on g; san Ϻ/ϻ on m, ϒ on U, lunate sigmas ϲ/Ϲ on v, reversed lunate sigmas ͻ/Ͻ on o, reversed epsilon ϶ on e, kai's Ϗ/ϗ on q, (reversed) dotted lunate sigmas ͽ/Ͽ ͼ/Ͼ on r and y, and archaic sampi Ͳ/ͳ on n. (inverted) Ohm Ω/℧ on W/w.

Trivia: Latin variants of names of Coptic letters are not standartized; so we use 3 names: Unicode name in capital, and two lowercase names from Wikipedia pages: of 2012/08 and of 2012/01. Since important for finding the positions, the remaining ones are: SHEI/shy/šai ϣ, HORI/hoori/hori ϩ. (To simplify memorization, SAMPI/none/psis nše Ⳁ is also made available on AltGr-p.)

“Business/Currencies/Hooks/Added Vertical Line/Not+mogrify” layout

“Business/Currencies/Hooks/Added Vertical Line/Not+mogrify” layout (as visible from Latin personality after AltGr-$):

/* To be auto-generated */

Observe that all of ©®℠™℗ “Business” signs are in the obvious locations; so are Vietnamese ơ and ư (heuristic: the $ sign has a hook on top right). All the currency signs of Unicode 6.2 can be entered by the first letter of their name or the country name (but one may need to combine with Shift or AltGr). Exceptions are YUAN[s],RIEL,RIAL,LIVRE TOURNOIS which are entered by the second letter. (Trivia: there are 3 signs for YEN (one latin, and 2 ideographic), and 2 (ideographic) signs for YUAN.) The “principal” sign for both of them is available on y/Y; the remaining 2 signs for YEN are on AltGr-y/Y, and both signs for YUAN are on AltGr-u/U. The remaining exceptions are the common currency symbols recognized by the shape, such as $ and £.

Here is the same layout with AltGr-bindings added in red (with letters outlined in green, and business symbols in blue):

/* To be auto-generated */

Note that zero-vowel Latin letters (schwa) are positioned on Z. This convention (considering Z and 0 as siblings) also influences other decisions made in design of this keyboard. Trivia: Do not confuse these Latin letters between themselves (Azeri əƏ vs. African ǝƎ), or with similarly-shaped Cyrillic letter әӘ, or with IPA symbol ə for schwa, or with THERE EXISTS math symbol ∃. As a minimum, they sort differently, have different capitalization rules, and their surrounding may be typeset differently by a smart enough typesetter. Similarity (or even identity) of glyphs has very little relationship to “sameness” of Unicode characters.

The standalone version of the Greek for-Polytonic personality

/* To be auto-generated */

The standalone version of the Hebrew personality

/* To be auto-generated */

(As usual, yellow outline means guessable-with-a-few-tries characters, brown outline means that the position must be learned.)

CONSONANTS are at the corresponding phonetic QWERTY lower-case positions, except for HET ח on H (or slided right to j) and visually placed SHIN ש on w and TET ט on u/T. (Trivia: two other “QWERTY” layouts, ZC and Script, place consonants the same as our — with exceptions of TET and VAV (one on v) — and they mismatch at these positions.) If a final form exists, it is put on Shift-position; likewise for SIN/SHIN variants (with the corresponding combining dot put in AltGr-position). DAGESH/MAPIQ/SHURUQ must be memorized on Y. (Additionally, HOLAM FOR VAV is on AltGr-v.)

The Yiddish digraphs are on AltGr-Shift of the suitable key. Trivia: Only one of them, ײַ, cannot be entered using Hebrew letters; it is put on more accessible AltGr-y. The only other non-Hebrew sign, JUDEO-SPANISH VARIKA is on AltGr-j. Dotted versions of BET בּ, KAF כּ/ךּ, PE פּ/ףּ may be entered with AltGr (on the left-hand key, if the base letter is on two keys).

VOWELS (niqqud) are positioned phonetically (and according to their — vestigal — duration) on keys with the blue outlines. Trivia: there are up to 5 durations per sound, ordered in decreasing order: one may consider SHEVA ◌ְ as the 4th form of e, and o has 4 or 5 forms, וֹ, ◌ֹ, ◌ָ/◌ׇ, ◌ֳ.

The first 3 niqqud are put on Shift/AltGr/Shift-AltGr-vowel. The remaining (up to 2) are put on AltGr/Shift-AltGr of the key below the vowel. So in the diagram above, it is the longest form which is visible on the Shift-vowel (except for i for which we cover one duration ◌ִ only; it is יִ which is put on AltGr-i).

SLIDED VOWELS: In addition to its AltGr-position, the secondary vowel point is also put on Shifted key below the vowel (observe the colored groups of keys above). The shva-form of the vowel is (in addition to its Shift-AltGr-position) on the key above (or, if not possible, right). Trivia: For o, one can go neither above nor right. One tertiary form is already on A (the ambiguous one); the disambiguation form can be entered without AltGr only on keyboards with an ISO key.

Likewise, we slide SHEVA yet more down of e — to V. Except for RAFE, SHIN/SIN DOTS, QAMATS QATAN and HATAF QAMATS, all niqqud may be entered on Shift-letters. (Since RAFE may be quite frequent in certain contexts, RAFE and QAMATS QATAN are made available on the “102th” ISO key. Trivia: according to the stats here, HATAF QAMATS is the rarest of all niqqud.)

The diagram below illustrates the AltGr-layout. The recipe above positions dotted/niqqud/Yiddish on the letter keys (outlined in yellow). Additionally, on symbol keys the yellow outline is for characters positioned according to their role: -, +, comma, dot.

/* To be auto-generated */

CANTILLATION MARKS are positioned visually (green outline on symbol keys), or according to the first letter of Unicode name (blue outline) or the 1st-letter-of-the-2nd-word (green outline on letter keys; also on SHALSHELET — which is put based on the 1st Hebrew letter, SHIN). If there is no more space for the mark, the mark migrates along an arrow to the neighbor key (and gets a brown outline; only for GERESH and variants of <,~). Trivia: the Unicode names are mis-transliterated.

DIAL-NIQQUD-BY-NUMBER: On AltGr-digits, the niqqud is put “visually”, according to its “number of dots”. Here we count in binary: T of ◌ָ is counted as if it were ˙ ⁚ ˙; we count — of ◌ַ as merged 8 dots. (And ⋱ is counted as a diagonal in a 3×3 square, giving 9. ;-) Now note that 10 points of —: land it on 0, and that shva of SHEVA is counted both as a Shift-variant of 2 dots, and — visually — as =. (And T of ◌ׇ counted as 7 is just an exception.)

Annotation marks ◌ׅ, ◌֯, ◌ׄ also have brown outlines (on ?cC). Punctuation is not specially highlighted (since the rest is drawn with ◌). All Hebrew cantillation marks, punctuation and annotation marks are present; those without outlines are duplicates — at more or less random positions. The reorder-control invisible characters are on AltGr-Shift-6,7,8,9,0 (heuristics: ‸ separates, & joins, * of CGI, “(” and “)” group and introduce order; I know no standard way to visualize them.) Trivia: Handling of multiple accents on a consonant is not a responsibility of an input method (with exception of providing CGJ); however, mention this thread of 2003, this summary of 2003, and these experiments of 2012.

Below is a combined diagram of this layout with AltGr-bindings added in red.

/* To be auto-generated */

Trivia: note that Unicode names for characters ([{}]) start with LEFT/RIGHT, but the Unicode defines their semantic (in BiDi context) to be OPEN/CLOSE instead. In particular, when in Right-to-Left context, the CLOSE characters mutates their shape to ([{, likewise for OPEN to }]). This is called BiDi mirroring. A similar effect happens with < >, but at least this reflect the names LESS/GREATER THAN of these characters.

This layout follows the “logical” approach, not the “visual” approach: pressing Shift-9 enters the OPENING PARENTHESIS, not the “character which looks like ( in Hebrew text”; likewise for other mirroring characters. So to type “(WORD)” one types Shift-9 W O R D Shift-0 no matter whether WORD is in left-to-right or right-to-left script. Similarly, Shift-, produces LESS THAN, and not the character which looks like < in right-to-left context.

Green/Ripe access and BlueKeys

In additition to its satellite faces (such as diacritic faces of Latin personality, or “extras” and “bizzare” Cyrillic faces, or polytonic/Coptic for Greek), each personality has bridges to the other 3 scripts. These bridges are intended for a quick entering of individual characters from another script; to enter a stretch of text in another script, it makes much more sense to switch to the personality of this script (how such switching happens is OS-specific). (For very short stretches, one may also consider the convenience access via keeping down appropriate modifier keys [Application-Menu etc]; see below.)

The prefix keys enabling the bridging are codenamed Green and Ripe: they are Shift-SPACE and AltGr-SPACE (also mneumonic as Left/Right). Pressing these prefixes repeatedly accesses also the “convenience faces” (MathBlue, Business, negation etc). The personalities are ordered as Latin, Greek, Cyrillic, Hebrew, and the prefixes Green, Ripe and Ripe×2 accesses 3 “other” personalities in this order.

Repeated Green accesses: (×2) MathBlue, (×3) Business, (×4) Coptic. ×3-Repeated Ripe accesses the “extras” Cyrillic'-face. As an added convenience, the base layer of the Green/Ripe face is also accessible via combining keyspresses with lCtrl-lAlt/Application-Menu modifier key(s) (recall that Green is base Greek/Latin from Latin/Cyrillic, and Ripe is Cyrillic/Greek from Latin/Cyrillic). These accessors lCtrl-lAlt and Application-Menu match the mneumonic of Left/Right. (Unfortunately, only the Base-layer and layers entered with AltGr or Control-Alt are controlled by the CapsLock; this excludes Ripe.)

On symbol positions, the Green and Ripe faces differ from the scripts personality's faces: the keys identical to the current script's keys (automatically non-alphabetical!) are replaced by special GreenKeys and RipeKeys. This provides a quick way to enter special symbols.

Another way to access special symbols is via BlueKeys (available on 2×Green). The principal difference between BlueKeys and the Green/RipeKeys is that BlueKeys are also sources for mogrification: for example, when macron mogrifier prefix is followed by & key, it cannot produce any reasonable result; so in addition to trying to mogrify &, it also tries to mogrify the corresponding BlueKey, which is , producing (the alternative way to combine horizontal line with ∩ is available on macron + AltGr-&).

So the symbols which may be subject to extensive mogrification are put on BlueKeys; the “unique” symbols which won't be useful as sources for mogrification are put on GreenKeys and RipeKeys. The heuristic for distinction between GreenKeys and RipeKeys is that GreenKeys are more “mathematical” when RipeKeys are more “typographical”; for an example, consider · and competing for the “.” position.

See example of GreenKeys, of RipeKeys. Below is the MathBlue face (which combines BlueKeys and math letters) as visible from Latin personality:

/* To be auto-generated */

Trivia: Note the difference between Hebrew-letter mathematical symbols (ℵ], (ℶ], (ℷ], (ℸ] and the Hebrew letters (א], (ב], (ג], (ד]. As a minimum, they are typeset in different directions (in this file, they are entered in the order (aleph]/(beth]/(gimel]/(dalet] and are surrounded by open-round/close-square parentheses); then this change of direction affects the symbols surrounding them (the parentheses in between Hebrew letters are mirrored, commas in between are typeset in the right-to-left order); and then most probably the application will take them from different fonts — and even if taken from the same font, they may have very different shapes/sizes since symbols are made look good when surrounded by Latin characters. Another comparison: ℵ₀, ℵ₁ vs. א₀, א₁. (Both examples are entered as: ALEPH₀, ALEPH₁.)

Extras: use Application-Menu (and other) modifiers

First of all, the base layer of the Green/Ripe faces is also accessible via combining keyspresses with lCtrl-lAlt or Application-Menu modifier key (this enters base Greek/Cyrillic in Latin mode, or Latin/Greek in Cyrillic). (Unfortunately, CapsLock is ignored with Application-Menu.)

Second, arrows may be entered by combining this modifier with 8 “direction keys” (arrows etc) on the numeric keypad. Shift makes double-arrows; the wide key and the high key (0 Ins and Enter) make double-sided arrows; the key in between (. Del) makes a long right arrow. One can use also “islands” synonims of these keys.

Third, the arithmetic operation keys on the numeric keypad are modified to become “elementary school” variants (÷×), or with Shift, “operator” variants (+ has no operator variant, so it becomes ∑). Since and + have no “elementary school” variants, these keys produce digit-wide dash, and Hebrew “elementary school” plus ﬩.

Fourth, the numeric keypad with NumLock enabled and AltGr modifier produces box-drawing symbols on digits 1–9, with horizontal line on the “wide” key 0 Ins, and vertical line on its neighbor . Del. Combine with Application-Menu to get double-lines, or/and with rCtrl to flip doubling of vertical lines (heuristic: the right Control-key controls doubling-of-the-symbol to-the-right). Example: with AltGr-rCtrl the top row 789 produces ╓ ╥ ╖. (Easter eggish: removing AltGr replaces double lines by bold lines: ┎ ┰ ┒! Currently. single rCtrl requires addition of lAlt-rCtrl. Also: removing NumLock produces wide-frame drawings, white/black frame without/with Shift: ▗ ▄ ▖/▛ ▀ ▜ on 789 — but Shift does not work due to column=15 bug)

Fifth, the F-keys with AltGr modifier produce dashes (or whitespace when Shift is added). The dashes are ordered according to length, so 01234 produce soft hyphen, hyphen, n-dash, m-dash, long-dash ― (HORIZONTAL BAR U+2015); the sequence is continued by paragraphos, which goes into other obelism marks ⸏⸓⸎ (here F0 is another name for F10). Near the right end are also NON-BREAKING HYPHEN, HYPHEN-BULLET, FIGURE DASH and OVERLINE. The whitespace comes in decreasing width: the F-key Fk produces the whitespace of width about em/k; the exception is F9, which produces the “mathematical” ²⁄₉-em space (Trivia: it is usually described as ⁴⁄₁₈-em), and F0=F10, which produces the 0-width space (Trivia: this is typically has a meaning of “word separator” used to make the line breakable at this place). The “unused” positions F7, F11, F12 keep EM-QUAD, FIGURE SPACE (heuristic: it is near digits), and PUNCTUATION SPACE. (Trivia: MathML to Unicode mapping sends ¹⁄₁₈-em space to HAIR SPACE, but watch what they do with negative spaces! Unicode tables say only that HAIR SPACE is narrower than ⅙-em. Anyway, we put it on 8.)

Moreover, one can enter Hebrew with modifiers ApplicationMenu-rCtrl.

Lastly, several multi-character strings may be inserted (the current key assignment is random, and selected to simplify debugging of keyboard input in applications). Two variants of m-dash surrounded by tiny whitespace are provided: one with narrowest whitespace is on lCtrl-lAlt-comma, one with slightly wider whitespace was on rCtrl-AltGr-slash). One-character long Plane1 string is on lCtrl-lAlt-<, and two-character long Plane1 string is on lCtrl-lAlt->; they enter     𝄞 and     𝄡𝄡. One can also replace any of these rCtrl-AltGr- by rCtrl-AltGr- or by lCtrl-Mnu- (conflicts for lCtrl-Mnu-/ for fractions!).

Extras: mathematical letters

Trivia: On windows, one cannot enter mathematical letters (with very few exceptions — all available on Green×2 — they are not in BMP) using prefix keys. To compensate, we provide alternative ways to enter them using multiple modifier keys: AltGr-ApplicationMenu enters Double-Struck (𝕢𝕨𝕖𝕣𝕥𝕪/ℚ𝕎𝔼ℝ𝕋𝕐/𝟙𝟚𝟛𝟜), AltGr-rCtrl enters Script (𝓆𝓌ℯ𝓇𝓉𝓎/𝒬𝒲ℰℛ𝒯𝒴), and combining all these modifiers enters Fraktur (𝔮𝔴𝔢𝔯𝔱𝔶/𝔔𝔚𝔈ℜ𝔗𝔜). (Heuristic: Fractur is the most bizarre of them.)

Unicode defines also multiple ranges of Latin mathematical letters, with just minor typographical variations. The utility of users entering them directly is questionable (except maybe for letters A,a,I which may appear both in plain English, and as math symbols; so they may win from explicit disambiguation; or — following the sensible practice mandated by ISO-80000-2 —  use different symbols for letters d,e,i when they mean variables, and when they mean constants or operators; monospace math?). However, to debug the problems with different applications (not) working with the keyboard, it makes sense to assign distinct characters to as many combinations of modifiers as possible. Moreover, defining extra combinations should have no negative impact on applications and users, and should not have measurable impact on the system memory footprint.

To follow on these lines we define the following mappings: lCtrl-Mnu for math italic (𝑞𝑤𝑒𝑟𝑡𝑦/𝑄𝑊𝐸𝑅𝑇𝑌), lCtrl-lAlt-Mnu for math bold italic (𝒒𝒘𝒆𝒓𝒕𝒚/𝑸𝑾𝑬𝑹𝑻𝒀), lAlt-Mnu-rCtrl for math sans serif bold (𝗾𝘄𝗲𝗿𝘁𝘆/𝗤𝗪𝗘𝗥𝗧𝗬/𝟭𝟮𝟯𝟰), lAlt-rCtrl for math sans serif bold italic greek (and for bold digits: 𝞱𝟂𝞮𝞺𝞽𝟁/𝟏𝟐𝟑𝟒; upper-case is not working due to a Windows bug with column number 15 in the keyboard description table), lAlt-Mnu for math monospace (𝚚𝚠𝚎𝚛𝚝𝚢/𝚀𝚆𝙴𝚁𝚃𝚈/𝟷𝟸𝟹𝟺; apparently, it is not working with the applications I checked). (Here Mnu is a shortcut for ApplicationMenu. Out of math flavors, we picked up those most frequently seen, and those most visually different from the text flavor.)

Extras: using Compose key

The idea of Compose key is that to get a character, you punch this key, then enter a sequence of characters which is “a natural representation” of the character (or another “natural identifier” of it). In other words, you “decompose” the character into components, and the keyboard “composes” these components back. For example, one could decompose á into ' a, and ŋ into e n g.

Currently, the Compose key may be entering either using the “second extra key” in the base region, or (temporarily) as Mnu-F12. There are 3 modes depending on how may times you punch Compose before typing the decomposition: X11's standard .Compose rules, MathML entities, and RFC 1345 character mneumonics.

Of standard .Compose rules, we support only those starting with Compose (denoted as Multi_key in the reference above), having no dead-keys, and being expanded to one BMP character. Inspect also the explanation of the “regular” part of .Compose rules (look at end for entries with s). For entity names: if one is a beginning of another entity name, one must follow the shorter one by SPACE. (BTW, it may be more useful to inspect entity names via the full list.) The full list of RFC mneumonics is supported, as well as £ on E u. (Trivia: this list supports only a repertoir of the very old version of Unicode.)

(With version 0.60, one must use Latin characters in the decomposition; hence using Compose from, e.g., Cyrillic personality is tricky.)

General goals and progress report

  1. No gotchas for people who cannot remember anything.
  2. Doing 3–4 experiments, one must be able to find most (80–90% achievable?) of covered characters knowing only a handful of general rules for how position are allocated to characters [*].
  3. Gradual degradation: if one memorizes many allocation rules, one should be able to type exotic characters quickly and conveniently. But if one remembers fewer rules, it should be the convenience which goes away, not the bulk repertoir of available characters. This means that a significant number of characters should be available via very easy to remember access rules (no matter whether the access is ergonomic). Then the more one is ready to memorize, the more ergonomic the layout becomes.
    This means that many characters should be accessibe in a whole scale of different heuristics. The scale goes from easy to remember but not ergonomic to the opposite.
  4. Have most (70%–80% achievable?) of covered characters available in easy-to-remember positions.
  5. Have full coverage of certain ranges of Unicode.

[*] Currently it is unclear if the general rules may be shared by all the “application domains”. For example, to access our layout this way, one needs to know different “handfuls” of allocation rules for Ancient Greek than for Math Symbols.

This were the goals. Currently achieved (ranges as of Unicode v6.2; we do not count characters accessible via Compose key):

Not yet implemented, or lost by upgrades to other goals:

Prefix keys: accessors and mogrifiers

(The explanations below complement the character tables for the Latin and Cyrillic personalities.) The following three are “bridge” prefixes allowing access to other personalities (this list is for Latin personality; “Green/Ripe/Blue” explanations are here):

	Shift-Space	Greek (AltGr=tonos/final/symbol etc), Superscript digits/symbols, “Green Keys”
	AltGr-Space	Cyrillic, “Ripe Keys”, Subscript digits/symbols, dashes
	AltGr-Space ×2	Hebrew {AND: iconic control-key symbols}

(for sub/superscript letters, follow by Ctrl-(Shift-)letter — if your app allows this). Multiple presses access some other useful stuff; we mention only:

	Shift-Space ×2	MathBlue (“Blue keys” and common math flavors of letter)

This is for convenience access (if an OS/application does not allow entering AltGr directly):

	Shift-AltGr-Space	AltGr-inverted base face

These keys when used with AltGr provide mogrifications with the following semantic (from Latin personality):

	;	Diaeresis, hook above [+subs-Vietnamese], “Blue Keys”, operators {AND: doubly-mogrified symbols, rotunda/squirrel/hook/curl, dot above+below, etc}
	"	Diaeresis, double-grave, double-struck capitals {AND: doubly-mogrified symbols, dot above symbols, dot+macron, stroke/swash, paleocontractions, etc}
	'	Acute [+ on horn], sharpen, add on right {AND: hooks, tail/leg/curl, turned} — overflows to/from the column on right
	`	Grave, unsharpen, squared, add on left {AND: reversed} — overflows to/from the column on left
	.	Ring above, dot above/below/dotless, rounded {AND: circled, amplified, insular} — overflows to/from the column on right
	,	Cedilla, ogonek, comma below {AND: visigothic/greekize/doubled-letters, whited mogrified} — overflows to/from the column on left
	^	Hat, Amplify, Whiten, Paleo, “other” mogrify {AND: smallcaps, loop/upturn/descender/bar/fishhook/turnaround/inverted-phonetic/dot-reversed} — overflows to/from the column on right
	6	Caron, breve, quasi-synonyms, n-Ary/Big {AND: arc/loop/check/belt/flourish/tilde-below/left-palatal-hook, insular/epigraphic, etc}
	~	Tilde [+ subst-Vietnamese] — overflows to/from the column on left
	̸	Stroke, cut-off, “other” phonetic {AND: Um, doubled letters, ŭ, dot above, double-overbar, but-not, fences}
	-	Macron, add horizontal line (or double line), phonetic, dashes (on digits etc) {AND: quill, right-hook, inv-breve, paleocontraction}
	
	$	Currencies, horn, add-vertical-line(s) {AND: double addleft/addright, “text” control-key symbols, etc}
		Superscript (and MODIFIER LETTERS), Phonetic
		Subscript (and MODIFIER LETTERS LOW), Small Caps, Legs
		Turnaround, inverted, reversed, turned, hooks (to the right)
		Hooks to the left (and palatal)

(The last group is also available from other personalities.)

The following four are available after Greek (pre-)prefix (Green) or with Green-modifiers (Ctrl-Alt-); combining them with Shift is equivalent to combining the following keypress with AltGr:

	\	Polytonic greek Vowels by vowel-key-column, Rows=Circumflex/Acute/None-or-Vrachi-Macron/Grave, AltGr=iotization {AND: Zodiak, etc}
	[	As \, with smooth aspiration
	]	As \, with rough aspiration
	`	Coptic, Archaic Greek, Stroked/Latinized Greek {AND: dashes, cp437 “control-graphic”, Zuang tones}

The following two are available after Cyrillic (pre-)prefix (Ripe):

	'	“Bizarre” Cyrillic, fractions {AND: “other” iconic Control-Key symbols}
	^	Cyrillic titlo-forms, power-of-10 multipliers {AND: “exotic” Cyrillic}

From non-Latin personalities, use appropriate modifications: for Latin-specific prefixes, use Green prefix (or Green modifiers); prefixes which become “native” drop Green/Ripe pre-prefix; prefixes which remain foreign may use a different pre-prefix.

In the character tables for the Latin and Cyrillic personalities, one can hover a mouse over a character, and a popup will explain which of the mogrification rules above was applied to produce this character.