Notes Vulgaris

Links
Универ
Account
Tags
blog books debian desktop eee evangelism fonts freetype hacker howto it javascript kb kde linux mercurial openoffice python xorg повидло
Типографская раскладка
2006-11-26 22:12 | tags: desktop, linux

Раз в мире существует 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 grp_led:caps -layout us+typo,ru:2+typo

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

Если вы используете другой способ настройки XKB, то вы должны там заменить us на us+typo и ru на ru:2+typo.

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

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

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

Версия для печати (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:00 reply permalink

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

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

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

Gluek 2007-05-12 00:11:00 reply permalink

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

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

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