RUU

Материал из OpenWiki
Перейти к: навигация, поиск

Русско-украинская совмещённая раскладка (RUU: «Russian-Ukrainian keyboard layout with additional Unicode symbols» или проще «Russian-Ukrainian United keyboard layout») — русская раскладка, содержащая в третьем слое буквы украинского и белорусского алфавитов, а также часто используемые Юникод-символы.

Поставляется xkeyboard-config с версии 2.3.


Вступление

Данная статья базируется на записях «журнала создания клавиатурной раскладки», которые были собраны из различных, задействованных в этом процессе, источников (почтовых рассылок, переписок, багтрекеров и т. д.). В длительном процессе работы над раскладкой приходилось сталкиваться с разными ситуациями, варьирующимися по шкале абсурда от лёгкого недоразумения до полного бреда, из-за чего многие параграфы сквозят сарказмом. По этой причине некоторые выражения не стоит принимать всерьёз.

Неполитический аспект.

Схему, которая определяет основной набор вариантов языковых раскладок страны, условно можно представить так:

страна >> народы >> языки >> раскладки

Ярким примером является российский «набор», содержащий следующие дополнительные варианты раскладок: Башкирская, Калмыцкая, Коми, Осетинская, Татарская, Удмуртская, Чувашская, Якутская и Сербская (правда, последний вариант немного не вписывается в приведённую схему). Такая же ситуация справедлива и для других стран, в то время как Украина, имеющая два основных языка — русский и украинский (причём в приблизительно равных пропорциях [2]), не имеет русского варианта раскладки (rstu_ru, по причинам, которые будут приведены далее, не в счёт).

О стандартах.

Сравнение раскладок клавиатуры, описанных государственными стандартами РСТ УССР 2019-91 и ДСТУ 3470-96.
«Синий» — значение для украинской раскладки согласно РСТ УССР 2019-91;
«Красный» — значение для русской раскладки согласно РСТ УССР 2019-91;
«Зелёный» — изменения, внесённые стандартом ДСТУ 3470-96.

На момент написания статьи украинская раскладка содержит всего два варианта, соответствующих государственному стандарту — это rstu и rstu_ru, созданные по РСТ УССР 2019-91, который уже 15 лет как не существует (в 1996 году был заменён действующим поныне ДСТУ 3470-96). Поскольку стандарт РСТ УССР 2019-91 создавался на заре цивилизации да ещё и внушительной группой учёных мужей [3], на практике оказался невостребованным. Я ни разу не встречал клавиатуру с такой раскладкой.

ПРИМЕЧАНИЕ: Указанный источник содержит ошибку, связанную с тем, что электронная версия стандарта была ещё в ОЕМ кодировке (а их было две, CP866 и CP1125; и когда документ в CP1125 читать в CP866 то «Ґ» перейдёт в «Є», «Є» в «Ї», «І» в «Ў» и «Ї» в «°» [4]), поэтому не удивляйтесь «украинским буквам» «Ў» и «°».


При разработке действующего стандарта ДСТУ 3470-96 за основу был взят всё тот же «первый блин» — РСТ УССР 2019-91. Тщательно перемешали символы, потеряли «№» и вот вам новый стандарт.

ПРИМЕЧАНИЕ: ДСТУ 3470-96, заверенный жирными печатями ГП «Укрметртестстандарт», мне так и не удалось увидеть (не то что денег жалко, просто не за что их платить), поэтому свои познания о нём я черпал источника на terena.org [5], опубликованным неизвестными бойцами и слегка оплёванным автором rstu/rstu_ru [6]).


Особенности стандартов
  1. Знаки препинания вынесены в первый ряд алфавитно-цифрового поля в нижнем регистре поэтому цифры придётся добывать при помощи Shift, и ещё, в процессе привыкания, каждый раз радоваться выскакивающей «Ё», вместо привычной точки или запятой.
  2. Соседство эндемичных букв осуществляется по разным затейливым принципам:
  • одинаковые звуки: [укр. «И»] = [рус. «Ы»], [укр. «І»] = [рус. «И»];
  • одинаковые умляуты: «Ї» и «Ё»;
  • отражённые символы «Є» и «Э»;
  • похожие хвостики: «Ґ» и «Ъ».

Очевиден вывод, если только Вас с раннего детства не заставляли работать в этой раскладке, то работа с ней может нанести серьёзный вред Вашему психическому здоровью.

И так, на момент написания этой статьи, действующему Государственному стандарту Украины не соответствует ни один из вариантов раскладки. Однако этот факт никого не расстраивает, впрочем, как и самого автора.


Украинская — Unicode.

Схема раскладки клавиатуры «Украинская — Unicode».

«Это украинская раскладка, которая добавляет некоторые символы, часто используемые при наборе на украинском языке. Эта раскладка не разрабатывалась специально для работников типографий или программистов, и является попыткой обеспечить минимальный набор символов, который был бы полезен широкой общественности. Предложенные символы третьего уровня включают некоторые типографские символы, которые всё чаще необходимо вводить с развитием настольных издательских систем, а также некоторые символы из алфавитов других славянских языков».

— Перевод с украинского ресурса, посвящённого этой раскладке[7].


Была создана ориентировочно в 1999 году Леоном Кантером (leon at geon.donetsk.ua) и AEN (aen at logic.ru). Базируется на «украинской стандартной клавиатуре» с добавлением весьма полезного третьего слоя, содержащего часто используемые Unicode-символы и буквы российского и белорусского алфавитов. Государственному стандарту она не соответствует, но, несмотря на этот «прискорбный» факт, является весьма функциональной и удобной, в основном благодаря третьему слою, который избавляет он необходимости «скакать» между раскладками из-за одной буквы или лезть куда-то за нужным символом. К сожалению, большинство пользователей, как показывает мой опыт, даже не подозревает о наличии такого удобства.

ПРИМЕЧАНИЕ: Следственный эксперимент: переключитесь на вашу «умолчательную» украинскую раскладку, зажмите правый Alt, нажмите клавишу с буквой «Ї»… ой, что это?! Это же «Ъ»! Откуда он здесь взялся? А из третьего слоя, о существовании которого Вы даже не подозревали!


Русско-украинская совмещённая раскладка.

Идея.

По моим наблюдениям, наиболее распространённый набор раскладок украинца состоит из английской (EN), русской (RU) и украинской (UA) в разных последовательностях. Также заметил, что многие из обладателей такого набора не используют RU и UA в равной степени — в таких случаях одна из них является основной (работа с основной документацией, деловая переписка, бухгалтерия и т. д.), а другая применяется лишь в редких случаях (некоторые поисковые запросы, регламентированные документы, отчёты и т. д.).

Зачем постоянно держать раскладку, которая нужна не всегда да и отличается от основной лишь несколькими символами? А незачем — можно перенести эти самые символы на третий уровень в основную раскладку! Для случаев, когда UA является основной раскладкой, а эндемичные буквы русского алфавита (Ё, Ъ, Ы и Э) нужны лишь изредка, решение существует уже давно — это Украинская Unicode раскладка. А вот для тех, у кого основная раскладка — RU (к числу которых отношусь и я) решение отсутствовало.

Что за зверь?

Схема Русско-украинской совмещённой раскладки.

Базирующаяся на русской стандартной раскладке, по существу представляет собой «зеркальное» отражение Украинской Unicode раскладки с незначительной корректировкой («Ґ» переехала с «гуляющей» от модели к модели клавиши <BKSL> в интуитивно понятное место — к своей старшей сестре «Г») и расширением набора часто используемых символов. Присутствие в раскладке белорусского краткого «у» (Ўў) — делает её интересной и для носителей этого языка.

Преимущества.

  • Легко настраивается — просто выбираете из списка раскладок (не надо никаких дополнительных клавиатурных примочек, kkbswitch'ей и прочего снаряжения).
  • Отпадает необходимость держать три раскладки — нужные буквы всегда под рукой.
  • Быстрый доступ к часто используемым символам.
  • Xneur в диком восторге.

Кому не надо.

Тем, кто использует RU и UA приблизительно в равных соотношениях эта раскладка может не представлять особого интереса.

Трудности перевода

Описание RUU в английском варианте xkeyboard-config выглядит так: «Russian (with Ukrainian-Belorussian layout)»

ПРИМЕЧАНИЕ: Первоначальное описание [Russian (with UKR and BEL layout)] было изменено по причине неочевидности для многих пользователей сокращений UKR и BEL в предыдущем варианте, и возникновения казусов: из-за того, что BEL указан в верхнем регистре его восприняли не как предполагалось «bel»=«Belarusian» (ISO 639-3), а как «BEL»=«Belgium» (ISO 3166-1 alpha-3), в результате чего получалась диковинная Русско-украинско-бельгийская раскладка.


Переводы на «языки-участники» выглядят таким образом:

  • RU: Русская (с укр. и беларус. буквами на 3-ем уровне)
  • UA: Російська (з українськими літерами на 3-му рівні)
  • BY: Руская (з беларускімі літарамі на 3-ім узроўні)

ПРИМЕЧАНИЕ: Белорусский перевод существует только в виде рекомендации, поскольку на данный момент в Белорусской команде переводчиков (translationproject.org) всего один активный участник на 182 проекта [8] и для xkeyboard-config перевода не существует вовсе.


Что за странный перевод на украинский и белорусский? Привожу аргументация «странного» перевода из его обсуждения с Украинской Translation team:

На мой взгляд, перевод на определённый язык должен передавать суть объекта перевода любым способом, но максимально эффективным для понимания посредственным носителем этого языка, и нести только необходимую для него информацию. Перевод: если язык операционной системы — украинский, то пользователю такой системы будет глубоко безразлично присутствие белорусских букв (на самом деле одной единственной) на третьем уровне, точно также, как и белорусу в аналогичной ситуации — присутствие украинских букв; в то время как пользователь с русским языком ОС может оказаться как украинцем так и белорусом, поэтому должен быть проинформирован о наличии обоих языков.

ОРИГИНАЛ (укр.): На мій погляд, переклад на певну мову має передавати суть об’єкта перекладу _будь-яким_ чином, але максимально ефективним для розуміння пересічним носієм цієї мови, і нести лише необхідну для нього інформацію. Переклад: якщо мова операційної системи — українська, то користувачу такої системи буде глибоко байдуже на наявність білоруських літер (насправді однієї єдиної) на третьому рівні, так само, як і білорусу — в аналогічній ситуації — на українські літери, в той час як користувач з російською мовою ОС може виявитись як українцем, так і білорусом, тому повинен бути проінформованим про наявність обох мов.

Как это настроить?

По воле майнтейнера xkeyboard-config, место RUU (до подтверждения её полезности и популярности) было определено в extras, так что есть некоторые нюансы.

setxkbmap и Xkbmap

Самым быстрым способом будет выполнение следующей команды:

$ setxkbmap -layout us,ru -variant ,ruu

— это самый простой пример, лишённый дополнительных настроек, таких как: модель клавиатуры, клавиши-модификаторы и т. д. Кому надо — «man setxkbmap» в руки (а «-options» можно подсмотреть в /usr/share/X11/xkb/rules/*.lst). Моя команда, к примеру, выглядит так:

$ setxkbmap -layout us,ru -variant ,ruu -option grp:alt_shift_toggle,grp:rctrl_switch,nbsp:level3,lv3:ralt_switch -model logicd

Чтобы система стартовала с этими настройками, указанную строку (без setxkbmap) надо поместить в /etc/X11/xinit/Xkbmap — для всех пользователей либо в ~/.Xkbmap — для текущего пользователя (последний вариант считается более правильным):

$ cat << EOF >> ~/.Xkbmap
-layout us,ru
-variant ,ruu
-option grp:alt_shift_toggle,grp:rctrl_switch,nbsp:level3,lv3:ralt_switch
-model logicd
EOF

(опции можно размещать в разных строках).

Результат:

$ cat ~/.Xkbmap
-layout us,ru  # выбор раскладки (в данном случае США и РФ)
-variant ,ruu  # выбор вариантов раскладки (для США выбран вариант по умолчанию, для РФ — вариант RUU)
-option grp:alt_shift_toggle,grp:rctrl_switch,lv3:ralt_switch  # настройки:
        # grp:alt_shift_toggle — переключать раскладки комбинацией Alt+Shift;
        # grp:rctrl_switch — переключить раскладку пока нажат правый Ctrl (очень удобно для быстрого добывания символов из соседней раскладки);
        # nbsp:level3 — неразрывный пробел на третьем уровне;
        # lv3:ralt_switch — включать третий уровень раскладки пока нажат правый Alt).
-model logicd  # модель клавиатуры (в данном случае это Logitech Cordless Desktop)


Есть ещё опции управления индикаторами, настройки цифровой клавиатуры, поведения различных клавиш и т. д., которые в изобилии водятся в /usr/share/X11/xkb/rules/*.lst и только и ждут, чтобы на них обратили внимание.

Описанный выше метод с файлом конфигурации Xkbmap работает в том случае, если Ваш DE не берёт на себя обязанность настройки раскладок.

GNOME

В gconf-editor необходимо активировать параметр /desktop/gnome/peripherals/keyboard/general/loadExtraItems, после чего дополнительные раскладки из «extras» (выделенные курсивом) появятся в диалоге выбора раскладок (Система / Параметры / Клавиатура или запуск gnome-keyboard-properties).

RUU будет доступна на вкладке «По стране» для Российской Федерации, а на вкладке «По языку» для русского, украинского и белорусского языков.

KDE4

Благодаря Andriy Rysin [arysin at gmail.com] с версии 4.6.3 дополнительные раскладки стали доступны (и без всяких переключателей) в «Параметры KDE / Устройства ввода / Клавиатура / Раскладки» (быстрее выполнить kcmshell4 kcm_keyboard).

Вариант RUU будет доступен при выборе русского, украинского или белорусского языка и русской раскладки.

Altlinux Alterator

Он же — «Центр управления системой» — пока не умеет [9].

MacOS X

Файлы раскладки и инструкции по установке можно взять на http://ruu.yuuzukiyo.net/

Windows

Добровольцы приветствуются. см пример на сайте http://r2u.org.ua/wiki/keyboard/UkrainianUnicode

Ubuntu

Ребята из Ubuntu показали пальцем на ребят из Gnome https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/1009995,

а ребята из Gnome сказали, что им неохота менять их крутой API из-за такой ерунды https://bugzilla.gnome.org/show_bug.cgi?id=682240,

поэтому дополнительные раскладки появятся в списке выбора источников ввода (Параметры системы / Ввод текста) только после активации параметра show-all-sources из командной строки:

$ gsettings set org.gnome.desktop.input-sources show-all-sources true

Как это работает?

Keyboard layout Key zones definition.png

Клавиши на представленных схемах клавиатурных раскладок делятся на следующие зоны:

нижняя левая
символ в нижнем регистре (простое нажатие на клавишу);
верхняя левая
символ в верхнем регистре (нажатие на клавишу с зажатой Shift);
нижняя правая
символ третьего уровня в нижнем регистре (нажатие на клавишу с зажатой клавишей LV3);
верхняя правая
символ третьего уровня в верхнем регистре (нажатие на клавишу с зажатыми LV3 и Shift).

Клавишей LV3 по умолчанию является Правый Alt. Для setxkbmap и Xkbmap она определяется опцией «-option lv3:», варианты которой можно подсмотреть так:

$ grep lv3 /usr/share/X11/xkb/rules/base.lst
  lv3                  Key to choose 3rd level
  lv3:switch           Right Ctrl
  lv3:menu_switch      Menu
 …

В KDE4 это также можно настроить всё в том же kcmshell4 kcm_keyboard на вкладке «Дополнительно», а в GNOME – Система / Параметры / Клавиатура (или запуск gnome-keyboard-properties) > Раскладки / Параметры раскладки / Клавиша для выбора 3-го ряда.

Как запомнить, что и где.

Схема Русско-украинской совмещённой раскладки (прозрачный градиент).
Обои со схемой Русско-украинской совмещённой раскладки. (Оригинал 1680×1050[1])

На первых этапах работы с новой раскладкой необходимо, чтобы её схема была постоянно на виду. Для себя я решил этот вопрос так: залил схему раскладки нехитрым прозрачным градиентом и без претензий на гениальный дизайн налепил её на любимые обои одного из рабочих столов.


Материалы

Предоставляю исходные изображения этой статьи в векторном формате *.svg, можете смело использовать их в своих целях:

1. Описание условных зон клавиши клавиатурной раскладки
Файл:Keyboard layout Key zones definition.svg.zip
2. Сравнение раскладок клавиатуры, описанных в государственных стандартах РСТ УССР 2019-91 и ДСТУ 3470-96
Файл:RSTU 2019-91 vs DSTU 2019-91 Layout.svg.zip
3. Схема Русско-украинской совмещённой раскладки
Файл:RUU Layout.svg.zip
4. Схема Русско-украинской совмещённой раскладки (прозрачный градиент)
Файл:RUU Layout transparent.svg.zip
5. Схема раскладки клавиатуры «Украинская — Unicode»
Файл:UA Unicode Layout.svg.zip