# Раскладки и макрос для новой эрзянской латиницы — спецификация

> Источник истины раскладок: [`keymap.json`](keymap.json). Орфография — Назаренко
> (learnerzya / *about-the-spelling*), реализована в `scripts/valks_conv.py` (`cyr_to_new`).
> Этот документ — обоснование схемы и мастер-таблица; платформенные файлы генерируются из
> `keymap.json` скриптом [`make.py`](make.py).

## Инвентарь новой латиницы

В новой графике 16 букв вне ASCII (плюс заглавные). `j` (/й/) — обычная ASCII-буква, отдельной
клавиши не требует. Буква `ě` (e-карон) к новой графике **не относится** (это знак RAVO для «э»;
в новой графике «э» → `ë`/`e`).

Три группы по диакритике:

| Группа | Диакритика | Буквы | Из кириллицы |
|---|---|---|---|
| Умляут (диерезис) | ¨ | ä ö ü ë ï | я ё ю · э · ы |
| Гачек (карон) | ˇ | š č ž · ľ ť ď | ш ч ж · ль ть дь |
| Акут | ´ | ń ŕ ś ź ć | нь рь сь зь ц |

## Единая логика ввода (одна на всех устройствах)

Одна и та же модель «диакритика + буква» работает на любой платформе. Это не случайность: ровно
так диакритику реализуют все ОС (мёртвые клавиши) и все мобильные клавиатуры (долгое нажатие).

| Диакритика | Мёртвая клавиша (десктоп) | Постфикс (макрос/мобильный) | Даёт |
|---|---|---|---|
| акут ´ | `AltGr+'` затем буква | буква + `'` | ń ŕ ś ź ć |
| карон ˇ | `AltGr+]` затем буква | буква + `=` | š č ž ľ ť ď |
| умляут ¨ | `AltGr+[` затем буква | буква + `"` | ä ö ü ë ï |

Мёртвая клавиша сама сохраняет регистр: `AltGr+'` затем `S` → `Ś`.

### Быстрый слой: AltGr напрямую (одно нажатие)

Для букв, у которых только одна диакритическая форма, дополнительно есть прямой ввод одной
комбинацией (мёртвая клавиша не нужна). Заглавная — добавить Shift.

| Клавиша | AltGr | AltGr+Shift |
|---|---|---|
| a o u e i | ä ö ü ë ï | Ä Ö Ü Ë Ï |
| s c z | š č ž | Š Č Ž |
| l t d | ľ ť ď | Ľ Ť Ď |
| n r | ń ŕ | Ń Ŕ |

`ś ź ć` напрямую на AltGr **не** вынесены — их базы `s z c` уже заняты гачеком (š ž č). Они
вводятся мёртвым акутом: `AltGr+'` → `s` = `ś`. (На постфиксе коллизии нет: `s=`→š, `s'`→ś.)

## Полная таблица соответствий

| Буква | База | Группа | Мёртвая клавиша | AltGr напрямую | Постфикс |
|---|---|---|---|---|---|
| ä Ä | a | умляут | `AltGr+[` a | `AltGr+a` | `a"` |
| ö Ö | o | умляут | `AltGr+[` o | `AltGr+o` | `o"` |
| ü Ü | u | умляут | `AltGr+[` u | `AltGr+u` | `u"` |
| ë Ë | e | умляут | `AltGr+[` e | `AltGr+e` | `e"` |
| ï Ï | i | умляут | `AltGr+[` i | `AltGr+i` | `i"` |
| š Š | s | карон | `AltGr+]` s | `AltGr+s` | `s=` |
| č Č | c | карон | `AltGr+]` c | `AltGr+c` | `c=` |
| ž Ž | z | карон | `AltGr+]` z | `AltGr+z` | `z=` |
| ľ Ľ | l | карон | `AltGr+]` l | `AltGr+l` | `l=` |
| ť Ť | t | карон | `AltGr+]` t | `AltGr+t` | `t=` |
| ď Ď | d | карон | `AltGr+]` d | `AltGr+d` | `d=` |
| ń Ń | n | акут | `AltGr+'` n | `AltGr+n` | `n'` |
| ŕ Ŕ | r | акут | `AltGr+'` r | `AltGr+r` | `r'` |
| ś Ś | s | акут | `AltGr+'` s | — | `s'` |
| ź Ź | z | акут | `AltGr+'` z | — | `z'` |
| ć Ć | c | акут | `AltGr+'` c | — | `c'` |

## Почему мёртвые клавиши, а не «всё на AltGr»

У `s z c` по две формы (š/ś, ž/ź, č/ć) и обе нужны в верхнем и нижнем регистре — это 4 глифа на
базу, в один слой AltGr+Shift они не помещаются без потери регистра. Мёртвая клавиша решает это
бесплатно (регистр несёт сама буква) и совпадает с тем, как диакритику набирают на всех ОС и в
долгом нажатии на телефоне. Поэтому мёртвая клавиша — основной механизм, а прямой AltGr —
ускоритель для однозначных букв.

## Постфикс и коллизии

Постфиксные пары (`s'`, `a"`, `s=`) используются макросом-расширителем и мобильным
автозамещением. Внутри эрзянского текста апостроф/кавычка/равно в этих позициях не встречаются,
поэтому ложных срабатываний нет. В смешанном (например, англоязычном) тексте расширитель
ограничивается рамками слова; для надёжности его можно включать только в эрзянской раскладке.
