Expertus metuit
Типографская раскладка
2006-11-26 22:11
Теги: xorg, linux, desktop

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

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

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

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

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

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

Установка

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

Для начала скачайте файл данных для XKB, содержащий параметры раскладки, взять его можно здесь. Этот файл нужно положить в нужный каталог с данными XKB (предварительно переименовав из symbols_typo.txt в symbols_typo, т.е. убрав расширение txt), обычно это /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:caps_toggle, т.е. клавишей Caps Lock), индикатор, используемый для отображения раскладки (grp_led: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+~). Также в моей версии нет всех композиционных символов для формирования акцентированных букв, кроме символа ударения; нет букв дореволюционной типографики и т.д. Также в моей раскладке нет композитных символов (которые часто используются для создания букв типа ä или ô), пользуйтесь вместо этого XCompose.

Раскладка протестирована и работает на Debian Lenny (более поздние проверены на Ubuntu 12.04, Debian Squeeze), его работа на других операционных системах не гарантируется, но вероятнее всего будет работать. Если у вас есть вопросы или предложения, можете оставить их в виде комментария к этой записи или пишите прямо на емейл sergei@regolit.com.

Комментарии

Rezorcin | 2010-11-07 в 17:24

Раскладка работает просто охуенно!

rootATlocalhost | 2008-02-18 в 04:49

Можно использовать Win клавиши :)

svu | 2006-12-12 в 18:56

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

| 2006-12-12 в 23:04

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

Gluek | 2007-05-12 в 00:11

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

| 2007-05-12 в 00:26

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

stokito | 2009-11-04 в 12:47

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

| 2009-11-04 в 15:15

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

Vsevolod Shorin | 2009-11-09 в 17:20

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

| 2009-11-10 в 22:24

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

tweekane | 2010-01-13 в 15:30

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

| 2010-01-17 в 23:53

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

| 2010-01-17 в 23:59

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

Vladimir | 2010-06-06 в 09:53

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

| 2010-07-18 в 23:14

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

ixth | 2010-07-04 в 16:39

Сергей, поставил Вашу раскладку, и столкнулся с проблемой: в русской раскладке вместо "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

| 2010-07-18 в 23:14

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

Хитрый Пряник | 2008-01-31 в 03:03

Да, вот с типом переключения надо бы подумать. Shift+Shift -- самое неудобное, что можно придумать ибо две руки надо задействовать. Капс тоже иногда нужен и должен выполнять свою функцию. Соответственно остаются комбинации одной рукой. Alt+Shift//Ctrl+shift/Ctrl+Alt/Shift+Caps...

eXtractor | 2007-09-08 в 02:42

А как бы здесь так сделать, чтобы основные раскладки переключались по Caps Lock, а не по LShift+RShift?

Текст комментария (разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com> ещё)
Имя (обязательно, 50 символов или меньше)
Email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2016 Sergey Stolyarov | Работает на Pyrone