Notes Vulgaris

Links
Типографская раскладка
ЖеЖе
Juick
Account
Tags
amarok blog books database debian desktop eee evangelism fonts freetype google graphics hacker howto it javascript kb kde linux mercurial openoffice php programming python rambler security xorg перевод повидло
Типографская раскладка
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.

reply

Comments

svu 2006-12-12 18:56 reply permalink

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

Sergei Stolyarov 2006-12-12 23:04 reply permalink

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

Gluek 2007-05-12 00:11 reply permalink

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

Sergei Stolyarov 2007-05-12 00:26 reply permalink

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

stokito 2009-11-04 12:47 reply permalink

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

Sergei Stolyarov 2009-11-04 15:15 reply permalink

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

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

Sergei Stolyarov 2009-11-10 22:24 reply permalink

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

tweekane 2010-01-13 15:30 reply permalink

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

Sergei Stolyarov 2010-01-17 23:53 reply permalink

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

Sergei Stolyarov 2010-01-17 23:59 reply permalink

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