Even the most "recent" historic letters appear to be really useless now. In fact, they were already obsolete by the time they were officially dropped 100 years ago.
So I considered adding support for extra, non-Slavic alphabets instead, but it's very difficult to map all those additional, often similar/conflicting, letters consistently. Also, the non-Slavic alphabets reuse very little letters of the Slavic ones discussed above, but instead uses many different letters for the same or similar phonemes. The only "useful" combination I could come up with was with Kazakh (extra letters ә, ғ, қ, ң, һ, ө, ү, ұ, і), but it's already a stretch.
A more elegant solution would be to have two separate international Rulemak extensions: one for the Slavic languages as discussed above, and another for non-Slavic languages. This leads to more consisent AltGr mappings, eg. for all the "tailed" letters, which cannot be formed through combining sequences: җ ӆ ҭ ң қ ӎ etc. But I'm not literate in any of these languages, so I won't be actually implementing this, I just leave the suggested mappings below.
The basic Slavic extension will be my "official" Rulemak implementation from now on.
(Note: only AltGr keys changing, the standard Russian letter layout stays the same.)
Rulemak + Slavic: Ukrainian, Belarusian, Serbian, Macedonian
[XKB] [PKL]
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
│ Ё ``│ ! ˝ │ @ │ № │ $ │ % │ ^ ¯ │ & │ * ₴ │ ( │ ) │ _ — │ Ъ + ┃ ⌫ ┃
│ ё ` │ 1 ´ │ 2 ¨ │ 3 # │ 4 ¢ │ 5 € │ 6 ˘ │ 7 │ 8 ₽ │ 9 [ │ 0 ] │ - – │ ъ = ┃Backspace┃
┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
┃ ┃ Я │ Ж │ Ф │ П │ Г Ґ │ й Ј │ Л Љ │ У Ў │ Ы Ї │ Ю : │ Ш { │ Щ } ┃ Enter ┃
┃ Tab ↹ ┃ я │ ж │ ф │ п │ г ґ │ й ј │ л љ │ у ў │ ы ї │ ю ; │ ш « │ щ » ┃ ⏎ ┃
┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
┃ ⌫ Back ┃ А │ Р │ С │ Т Ћ │ Д Ђ │ Ч Џ │ Н Њ │ Е Є │ И І │ О │ Ь " │ Э | ┃ ┃
┃ space ┃ а │ р │ с │ т ћ │ д ђ │ ч џ │ н њ │ е є │ и і │ о │ ь ' │ э \ ┃ ┃
┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫
┃ ┃ З Ѕ │ Х │ Ц │ В Ќ │ Б Ѓ │ К │ М │ ; │ : │ ? ┃ ┃
┃ Shift ⇧ ┃ з ѕ │ х │ ц │ в ќ │ б ѓ │ к │ м │ , < │ . > │ / ┃ Shift ⇧ ┃
┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃
┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
Rulemak + Slavic + Kazakh + historical
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
│ Ё ``│ ! ˝ │ @ │ № │ $ │ % │ ^ ¯ │ & Ӏ │ * ₴ │ ( Ү │ ) Ұ │ _ — │ Ъ + ┃ ⌫ ┃
│ ё ` │ 1 ´ │ 2 ¨ │ 3 # │ 4 ¢ │ 5 € │ 6 ˘ │ 7 ӏ │ 8 ₽ │ 9 ү │ 0 ұ │ - – │ ъ = ┃Backspace┃
┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
┃ ┃ Я Ѣ │ Ж Ѵ │ Ф Ѳ │ П Ғ │ Г Ґ │ й Ј │ Л Љ │ У Ў │ Ы Ї │ Ю : │ Ш { │ Щ } ┃ Enter ┃
┃ Tab ↹ ┃ я ѣ │ ж ѵ │ ф ѳ │ п ғ │ г ґ │ й ј │ л љ │ у ў │ ы ї │ ю ; │ ш « │ щ » ┃ ⏎ ┃
┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
┃ ⌫ Back ┃ А Ә │ Р │ С │ Т Ћ │ Д Ђ │ Ч Џ │ Н Њ │ Е Є │ И І │ О Ө │ Ь " │ Э | ┃ ┃
┃ space ┃ а ә │ р │ с │ т ћ │ д ђ │ ч џ │ н њ │ е є │ и і │ о ө │ ь ' │ э \ ┃ ┃
┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫
┃ ┃ З Ѕ │ Х Һ │ Ц │ В Ќ │ Б Ѓ │ К Қ │ М Ң │ ; │ : │ ? ┃ ┃
┃ Shift ⇧ ┃ з ѕ │ х һ │ ц │ в ќ │ б ѓ │ к қ │ м ң │ , < │ . > │ / ┃ Shift ⇧ ┃
┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃
┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
Rulemak + generic non-Slavic: Kazakh, Kyrgyz, Tatar, Uzbek, Mongolian, Ossetian, Tajik, Dungan, ...
(all merely accented letters are left to compose combinations.)
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
│ Ё ``│ ! ˝ │ @ │ № │ $ │ % │ ^ ¯ │ & Ӏ │ * ¤ │ ( Ұ │ ) ] │ _ — │ Ъ + ┃ ⌫ ┃
│ ё ` │ 1 ´ │ 2 ¨ │ 3 # │ 4 ¢ │ 5 € │ 6 ˘ │ 7 ӏ │ 8 ₽ │ 9 ұ │ 0 [ │ - – │ ъ = ┃Backspace┃
┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
┃ ┃ Я Ӕ │ Ж Җ │ Ф │ П Ҕ │ Г ғ │ й Ј │ Л Ӆ │ У Ү │ Ы Ҩ │ Ю : │ Ш { │ Щ } ┃ Enter ┃
┃ Tab ↹ ┃ я ӕ │ ж җ │ ф │ п ҕ │ г Ғ │ й ј │ л ӆ │ у ү │ ы ҩ │ ю ; │ ш « │ щ » ┃ ⏎ ┃
┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
┃ ⌫ Back ┃ А Ә │ Р Ҏ │ С Ҫ │ Т Ҭ │ Д Џ │ Ч Ҷ │ Н Ң │ Е Є │ И І │ О Ө │ Ь " │ Э | ┃ ┃
┃ space ┃ а ә │ р ҏ │ с ҫ │ т ҭ │ д џ │ ч ҷ │ н ң │ е є │ и і │ о ө │ ь ' │ э \ ┃ ┃
┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫
┃ ┃ З Ӡ │ Х Ҳ │ Ц Ҵ │ В Һ │ Б Ҟ │ К Қ │ М Ӎ │ ; │ : │ ? ┃ ┃
┃ Shift ⇧ ┃ з ӡ │ х ҳ │ ц ҵ │ в һ │ б ҟ │ к қ │ м ӎ │ , < │ . > │ / ┃ Shift ⇧ ┃
┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃
┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
DreymaR said:One possibility is having a dead key on AltGr+<key> and the combining accent on AltGr+Shift+<key>. Then, it's also fairly simple to swap them for users who want that.
I was already using AltGr+Shift for related accent pairs (grave/double grave, acute/double acute, breve/macron), but X11 actually has a nicer solution: the dead key applied to itself results in the corresponding combining character. This means equivalent options are: <dead_acute> <letter> = <letter> <dead_acute> <dead_acute> = <letter> <combining_acute>. So the XKB layout uses proper dead keys now, which can directly or indirectly form all needed combinations. For PKL the dead key combinations have to be completely mapped in the layout itself, this is still to-do.
Last edited by ghen (25-Feb-2018 15:56:22)