Notes Vulgaris

Links
Типографская раскладка
ЖеЖе
Жизненный цикл Серебряной Пули
Account
Tags
Типографская раскладка
2006-11-26 22:11 | tags: desktop, linux, xorg

Раз в мире существует UNICODE, то им надо пользоваться! Поэтому я однажды сел и написал небольшой файлик для конфигурации XKB, чтобы можно было вводить некоторые юникодные символы прямо с клавиатуры. Сначала это были символы для русских кавычек-лапок (« и ») и длинного тире (—). Через некоторое время я наткнулся в сети на заметку в блоге Ильи Бирмана о создании им специальной типографской раскладки для непосредственного ввода кучи юникодных символов.

Идея мне понравилась и я решил реализовать эту идею под линуксом.

Первая версия была опубликована в моём блоге в августе 2006 года. Раскладка представляла собой файл конфигурации XKB, который нужно было вручную (или скриптом) «скармливать» X-серверу. Кроме того, в этой раскладке был весьма жёстко прошит способ переключения раскладок (RShift+LShift), а сменить его было весьма непросто. Такой вариант вполне работоспособен до первого масштабного изменения файлов данных XKB. За прошедшие два года такое случалось раза три и мысль переделать всё правильно созрела окончательно.

Итак, основные требования:

  1. в системе должны остаться две «главные» раскладки — русская (йцукен) и английская (qwerty), переключение между ними должно осуществляться циклически выбранной пользователем комбинацией;
  2. переключение на дополнительную раскладку (типографскую) должно быть временным и осуществляться при помощи нажатия и удержания правой клавиши Alt;
  3. раскладка должна интегрироваться в системную базу XKB и пользователь для включения раскладки не должен выполнять какие-то экзотические действия.

Удовлетворить всем этим требованиями удалось вот только сейчас. Более-менее правильный файл для XKB создан, осталось только его отладить и закоммитить в основную ветку XKB.

Установка

Если вы используете xkeyboard-config версии выше 1.5, пропустите этот шаг, файл раскладки уже включён в пакет.

Для начала скачайте файл данных для XKB, содержащий параметры раскладки, взять его можно здесь. Этот файл нужно положить в нужный каталог с данными XKB, обычно это /usr/share/X11/xkb. Делать это нужно из-под суперюзера или используя sudo. Вот примерный сценарий:

$ wget http://regolit.com/files/symbols_typo
$ sudo cp symbols_typo /usr/share/X11/xkb/symbols/typo

Первой командой выкачивается файл, второй командой он кладётся в нужное место. В вашей системе нужный каталог с данными XKB может располагаться в другом месте.

Конфигурация

Конкретный способ конфигурации зависит от того, как именно вы инициализируете xkb. Сделать это можно, например, так:

$ setxkbmap -option grp:caps_toggle -option lv3:ralt_switch -option grp_led:caps -layout us+typo,ru:2+typo

Эта команда задаёт способ переключения (grp:capstoggle, т.е. клавишей Caps Lock), индикатор, используемый для отображения раскладки (grpled:caps, т.е. индикатор Caps Lock), а также непосредственно раскладки (us+typo и ru:2+typo). Как можно заметить, слой с дополнительными символами добавляется к обеим раскладкам (us и ru).

Также можно использовать такую команду:

$ setxkbmap -model pc104 -layout us,ru -option lv3:ralt_switch,grp:caps_toggle,misc:typo,grp_led:caps

Этот вариант задаёт клавишу «Caps Lock» в качестве переключателя раскладок ru—en, а для временного переключения на слой с типографскими символами клавишу «Right Alt»

Если вы пользуетесь современными версиями KDE4 или GNOME, то в них слой с типографскими символами можно включить в окне конфигурации переключалки языков.

Использование

На рисунке представлена схема раскладки: на каких клавишах стандартной клавиатуры расположены новые символы.

Схема раскладки (кликните, чтобы открыть картинку целиком)

Версия для печати (PDF, A4)

На тёмно-красном фоне изображены символы, которые получаются при одновременном нажатии AltGr (т.е. правого Alt) и соответствующей клавиши на основной части клавиатуры. Например, чтобы напечатать символ параграфа (§), необходимо нажать клавишу «AltGr» и, удерживая её, нажать клавишу «4» в верхнем ряду клавиатуры.

На зелёном фоне изображены символы, которые получаются при одновременном нажатии AltGr, Shift и нужной клавиши. Например, чтобы напечатать символ цента (¢), нажмите «AltGr», не отпуская её, нажмите Shift, и удерживая обе клавиши, нажмите клавишу «C».

Важные замечания

За время использования раскладки она постепенно изменялась, обрастала новыми символами, теряла старые. И выкладываемая сейчас версия сильно отличается от первоначальной, а также несколько отличается от второй версии типографской раскладки от Ильи Бирмана. В частности, в моей версии некоторые символы перемещены на другие клавиши (например, символ ударения не AltGr+A, а символ «≈» на AltGr+Shift+~). Также в моей версии нет всех композиционных символов для формирования акцентированных букв, кроме символа ударения; нет букв дореволюционной типографики и т.д.

Раскладка протестирована и работает на Debian Lenny, его работа на других операционных системах не гарантируется. Если у вас есть вопросы или предложения, можете оставить их в виде комментария к этой записи или в комментариях к соответствующей записи в моём блоге. Либо обращайтесь напрямую ко мне в jabber — cancel@regolit.com.

Comments

svu 2006-12-12 18:56 reply to this comment permalink

В принципе, я был бы не против запихать оную раскладку в xkeyboard-config, если б кто привел ее к более человеческому виду, как принято в symbols/ru

Sergei Stolyarov 2006-12-12 23:04 reply to this comment permalink

Постараюсь допинать, надо будет только получше изучить XKB.

А отдельно пару клавиш можно переназначить?

Sergei Stolyarov 2007-05-12 00:26 reply to this comment permalink

Можно, разрешаю :)

stokito 2009-11-04 12:47 reply to this comment permalink

Слушай а может ты вместе с besisland объеденишь усилия. Он вот тоже своё поделие сделал http://besisland.name/rukbi/install/ Я хочу простой готовый deb пакет для убунты а про иксы даже не знать.

Sergei Stolyarov 2009-11-04 15:15 reply to this comment permalink

Не вижу смысла, мой конфиг уже в дистрибутиве.

В последней убунте есть некоторые дополнительные сочетания клавиш. А такой же удобной картинки с ними у Вас не найдётся?

Sergei Stolyarov 2009-11-10 22:24 reply to this comment permalink

Надо посмотреть на эти дополнительные сочетания, я про них ничего не знаю.

А где указан способ переключения на третью раскладку?

Sergei Stolyarov 2010-01-17 23:53 reply to this comment permalink

Это юзер сам выбирает. «3rd level shortcut», у меня это правый Alt.

Sergei Stolyarov 2010-01-17 23:59 reply to this comment permalink

Ошибка, да. Исправил, добавил параметр конфигурации переключалки.

Vladimir 2010-06-06 09:53 reply to this comment permalink

Здравствуй. Как всегда что-то да не работает. Раскладка ставится прекрасно, но после перезагрузки слетает. Приходится ещё раз прописывать конфигурации и тогда снова работает. Что делать?

Sergei Stolyarov 2010-07-18 23:14 reply to this comment permalink

Пользуйтесь средствами DE для установки раскладки, данная раскладка уже входит в состав XKB и включается опцией typo.

Сергей, поставил Вашу раскладку, и столкнулся с проблемой: в русской раскладке вместо "1" печатается "¹", вместо 4 — "‰", вместо дефиса — длинное тире и т. д. . Пытался править конфиг клавиатуры в xorg.conf, но как-то не преуспел. Может Вы подскажете что я делаю не так?

Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "kbd"
    Option      "XkbRules"      "xorg"
    Option      "XkbModel"      "pc105"
    Option      "XkbLayout"     "us+typo,ru:2+typo"
    Option      "XkbVariant"    ","
    Option      "XkbOptions"    "grp:caps_toggle,misc:typo,lv3:ralt_switch,grp_led:scroll"
EndSection
Sergei Stolyarov 2010-07-18 23:14 reply to this comment permalink

Пользуйтесь средствами DE для установки раскладки, данная раскладка уже входит в состав XKB и включается опцией typo. Не нужно уже ничего прописывать в xorg.conf.

post new comment