LINUX.ORG.RU

Ввод символов древнеанглийского (þ, ð, æ, ƿ, ā, ġ) в Linux: Compose, ~/.XCompose, IBus, раскладки

 , , ,


0

1

Взялся за древнеанглийский (язык «Беовульфа») и первым делом упёрся в клавиатуру. В научных изданиях используются торн (þ), эт (ð), эш (æ), иногда винн (ƿ), долгие гласные с макроном (ā, ē, ī, ō, ū, ȳ, ǣ) и палатализованные согласные с точкой (ġ, ċ). В Linux всё это уже есть, нужно лишь знать, где искать. Ниже — способы от самого быстрого к самому универсальному.

1. AltGr: возможно, всё уже есть в вашей раскладке

Сначала загляните в раскладку. Я проверил по файлам xkb (/usr/share/X11/xkb/symbols/fr и us):

  • US international (us(intl)) и US altgr-intl: AltGr+t → þ, AltGr+d → ð, AltGr+z → æ. Мёртвая клавиша макрона — AltGr+Shift+3.
  • bépo (fr(bepo)): AltGr+a → æ, AltGr+t → þ, AltGr+d → ð (с Shift — заглавные). Макрон — мёртвая клавиша AltGr+m, точка сверху — мёртвая клавиша AltGr+Shift+i: AltGr+m, затем e даёт ē; AltGr+Shift+i, затем g даёт ġ.
  • Обычная французская AZERTY (fr): напрямую ничего из этого нет, придётся пользоваться Compose.

Проверить у себя:

grep -nE 'thorn|eth|\bae\b' /usr/share/X11/xkb/symbols/fr

2. Клавиша Compose — универсальное решение

Compose (Multi_key) позволяет набрать символ последовательностью клавиш. Сначала её нужно назначить:

setxkbmap -option compose:ralt     # правый Alt становится Compose (X11)
setxkbmap -option compose:menu     # или клавиша Menu, если AltGr нужен

В GNOME это делается в «Доп. настройках» (gnome-tweaks) → Клавиатура → Клавиша Compose, либо из консоли:

gsettings set org.gnome.desktop.input-sources xkb-options "['compose:menu']"

В KDE Plasma: Параметры системы → Клавиатура → Дополнительно → положение клавиши Compose.

Стандартные последовательности лежат в /usr/share/X11/locale/en_US.UTF-8/Compose (в Debian — пакет libx11-data; проверял на libX11 1.8.12). Нужные нам:

  • þ / Þ — Compose t h / Compose T H (<Multi_key> <t> <h> : "þ" thorn)
  • ð / Ð — Compose d h / Compose D H (<Multi_key> <d> <h> : "ð" eth)
  • æ / Æ — Compose a e / Compose A E (<Multi_key> <a> <e> : "æ" ae)
  • ā, ē, ī, ō, ū — Compose - a (или Compose _ a)
  • ȳ — Compose _ y (<Multi_key> <underscore> <y> : "ȳ")
  • ġ — Compose . g (или Compose g .)
  • ċ — Compose . c (или Compose c .)

Подвох: для ȳ и ǣ есть только вариант с _ (не с -), а для ǣ нужно, чтобы æ была на клавише (Compose _ æ). Для винна (ƿ, U+01BF) стандартной последовательности нет вообще. Проверка:

grep -nE 'thorn|U0121|U010B|U01BF' /usr/share/X11/locale/en_US.UTF-8/Compose

3. Свои последовательности в ~/.XCompose

Создаём ~/.XCompose, который сначала подключает системный файл (иначе все стандартные последовательности пропадут), а затем добавляем свои:

include "%L"

# Винн (стандартной последовательности нет)
<Multi_key> <w> <w>   : "ƿ"   U01BF   # LATIN LETTER WYNN
<Multi_key> <W> <W>   : "Ƿ"   U01F7   # LATIN CAPITAL LETTER WYNN

# ǣ через дефис, по аналогии с Compose - a
<Multi_key> <minus> <ae>   : "ǣ"   U01E3
<Multi_key> <minus> <AE>   : "Ǣ"   U01E2

%L — это Compose-файл текущей локали. Перед добавлением последовательности проверьте grep-ом, что она не занята и не является префиксом другой (w w, W W и minus ae свободны — я проверял). Для ġ и ċ ничего добавлять не надо. Затем перезапустите приложения или сессию.

4. IBus: ввод по коду Unicode

В IBus (в GNOME он стоит по умолчанию) Ctrl+Shift+U, затем шестнадцатеричный код и пробел или Enter вставляют любой символ. Коды:

  • þ / Þ — 00FE / 00DE
  • ð / Ð — 00F0 / 00D0
  • æ / Æ — 00E6 / 00C6
  • ƿ / Ƿ — 01BF / 01F7
  • ā / ē / ī / ō / ū / ȳ — 0101 / 0113 / 012B / 014D / 016B / 0233
  • ǣ — 01E3
  • ġ / Ġ — 0121 / 0120
  • ċ / Ċ — 010B / 010A

Как вариант — KCharSelect или gucharmap, где можно искать «wynn» по имени.

5. А что с Wayland?

Под Wayland setxkbmap бесполезен: опция compose: задаётся в настройках окружения (они передают её композитору), а в Sway — строкой xkb_options compose:ralt в конфиге. Сама клавиша Compose работает в GTK- и Qt-приложениях, будь композиция через IBus или через libxkbcommon. А вот с ~/.XCompose всё неоднозначно: libxkbcommon его читает, свежие версии IBus тоже, но некоторые сочетания (Electron, Flatpak, GNOME с IBus) игнорируют ваши добавления или требуют перелогиниться. Если свой ƿ не набирается, проверьте сначала в другом приложении.

6. Шрифты

Символ бесполезен, если вместо него квадратик; хуже всего с винном. Надёжные варианты:

  • Junicode — сделан для медиевистов, очень полный (пакет fonts-junicode в Debian/Ubuntu);
  • DejaVu Sans / Serif;
  • Noto Serif (и Noto Sans).

Какие установленные шрифты покрывают винн:

fc-list ':charset=01bf' family | sort -u

Можно проверить сразу несколько кодов: fc-list ':charset=fe f0 e6 1bf 121 10b' family.

7. Пример: первая строка «Беовульфа»

Цель — «Hwæt! Wē Gār-Dena in ġēardagum». Со стандартными последовательностями Compose:

  • Hw, затем Compose a e → æ, затем t!;
  • W, затем Compose - e → ē;
  • G, затем Compose - a → ā, затем r-Dena in;
  • Compose . g → ġ, затем Compose - e → ē, затем ardagum.

Вопрос к сообществу

Дальше начинается собственно чтение: основной справочник — словарь Босворта–Толлера, а для быстрой проверки значения уже набранного слова пригодится и переводчик с древнеанглийского. Но вопрос у меня скорее технический: как вы настраиваете Compose и свой ~/.XCompose под Wayland — работает ли у вас всё в Electron и Flatpak? И какими шрифтами пользуетесь для редких латинских символов?

Пользуюсь активнейше. В том числе для набора расширенной латиницы, греческого, иврита, кириллический букв, отсутствующих в русском, нормальных знаков препинания (тут на ЛОРе не заметно, потому что есть автозамена, но так вообще я всегда ставлю длинное тире, ёлочки, лапки и т.п.). Удобнейшая штука, не представляю, как под некоторыми другими ОС без неё живут (запоминание четырёхзначных цифровых кодов — не вариант…)

Но вопрос у меня скорее технический: как вы настраиваете Compose и свой ~/.XCompose под Wayland

Да обычным образом. Первой строкой include "/usr/share/X11/locale/en_US.UTF-8/Compose", а дальше погнали своё.

работает ли у вас всё в Electron

Хороший вопрос… Из всего, сделанно на этой дряни, у меня только игры есть. И мне там никогда не приходилось что-то вводить (максимум может имя латиницей…). Попробовал сейчас две первых попавшихся игры, но в них не оказалось полей ввода. Так что хз ¯\_(ツ)_/¯

и Flatpak

Этой дрянью не пользуюсь совсем. Так что, увы, тоже не подскажу…

И какими шрифтами пользуетесь для редких латинских символов?

В Noto есть практически весь юникод.

CrX ★★★★★
()
Ответ на: комментарий от CrX

как под некоторыми другими ОС без неё живут

Для MacOS и Windows есть раскладка Бирмана. Там не всё, но жить можно.

Для Haiku нам расскажут соответствующие специалисты.

Aceler ★★★★★
()

Я как раз сегодня мимокрокодил, разбирался окончательно с Fcitx5. В общем, пока эито всё не готово, ибо для не-ероглифов наличие одновременно XCB+Dbus+IBus+Fcitx4+Fcitx5 (это всё из-за разных новинок в Qt и GTK и разных snap/flatpack) выбешивает, при этом некоторые приложения в некоторых режимах отказхываются жрать клавиатурный ввод по dbus и остаются на дефолтовой раскладке, некоторые не видят ничего кроме Fcitx4 пока они в snap и т.п.

В итоге попробую наговнокодить расширение Fcitx5, которое будет мониторить, что оно установило (какую раскладку) и форсить её в назначенную в соответствие xkb - это будет идеальный вариант. Кушайте прогресс, не обляпайтесь.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 3)

Автор, ты то ли косишь под чатгптшный стиль, то ли обработал им статью (надеюсь что не сочинил), это не очень смотрится.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария