Unified System B transnational Cyrillic input method

Loosely based on GOST 7.79 System B, as documented by Wikipedia at any rate … not that the latter really matters as it’s not meant to conform to anything as such, just to provide a convenient way of inputting Cyrillic letters from multiple Slavic languages (System B itself has several minor variants for each language). Note that this is limited to Slavic letters, as opposed to Turkic or Uralic.

In a similar sense, this is not intended to be stable or as a way of romanising content, just as an input method. Much better romanisation is possible when diacritics are allowed, but an input method can only guarantee keys for ASCII.

The layout is set to default to facilitate use on both QWERTY and Dvorak. Those with layouts where the backtick is a deadkey may wish to change this before installing.

Current version for IBUS — Tries to avoid multiple mappings, introducing new ones where necessary. Recommended (but no guarantees).

Old version for IBUS — I’ve given this version limited distribution already so I’m including it here so as not to confuse anyone. Several Roman letters or sequences are mapped to multiple Cyrillic possibilities so it’s a bit awkward. Another consequence of not having made up any codes is that the input for Serbian (apparently not supported by regular System B) is incredibly awkward.  I do not recommend this.

IBUS SAMPA for IPA — Unrelated but I have nowhere better to put it.

InputCharacterComments
AА
A`ЪThe ŭ vowel in Bŭlgaria.
``ъPreferred representation for languages where it is silent.
BБ
C, CzЦCz preferred over C before letters other than i, e, y, j.
ChЧ
ChhЋMade up as Serbian is not covered by System B (Serbian Latin would be ć (not ASCII)), but H is not used by itself so it is unambiguous. Previous IME versions awkwardly overloaded this as an option on K`.
DД
DhЏRomanisation defined for Macedonian, but also used in Serbian. Serbian Latin: Dž (not ASCII).
DhhЂMade up as Serbian is not covered by System B (Serbian Latin would be đ (not ASCII)), but H is not used by itself so it is unambiguous. Previous IME versions awkwardly overloaded this as an option on G`.
EЕ
E`Э
FФ
FhѲ
GГ
G`ЃSystem B and previous IME versions uses for both Ґ and Ѓ (not a phonetic match, albeit mutually legible).
GhҐMade up, but H is not used by itself so it is unambiguous. System B uses G` which is ambiguous with Ѓ.
H🚫Used only as a modifier in input polygraphs, not as a letter. See X.
IИNot following the I→І for specifically Ukrainian System B, use I`.
I`ІGoing with this as the only unambiguous way of entering this.
JЙSystem B and previous IME versions use this for both Й and Ј.
J`ЈMade up. No idea how you would palatalise it more than it is anyway so should be fine.
KК
K`Ќ
LЛ
LhЉSystem B and previous IME versions (including previous new versions) use L` but Lh is less ambiguous: while the letter is equivalent to (and fairly mutually legible with) L+`, this is inconvenient, and would also mess up attempts to type e.g. L``.
MМ
NН
NhЊSystem B and previous IME versions (including previous new versions) use N` but Nh is less ambiguous: while the letter is equivalent to (and fairly mutually legible with) N+`, this is inconvenient, and would also mess up attempts to type e.g. N``.
OО
O`Ѫ
PП
RР
SС
ShШ
ShhЩPrevious IME versions accepted Sht (preferred by System B for Bulgarian) but this has been removed as ambiguous.
TТ
UУ
U`Ў
VВ
XХ
Y`ЫListed before other Y_. Not following the Y`→И for specifically Ukrainian System B, use I.
YaЯ
YeЄSystem B and previous IME versions use this for both Є and Ѣ.
Ye`ѢMade up but I would presume it to be unambiguous in practice.
YhѴ
YiЇ
YoЁ
YuЮ
ZЗ
Z`S
ZhЖ
`ьBacktick has no case, but significantly more common lowercase listed first.