Раз в мире существует UNICODE, то им надо пользоваться! Поэтому я однажды сел и написал небольшой файлик для конфигурации XKB, чтобы можно было вводить некоторые юникодные символы прямо с клавиатуры. Сначала это были символы для русских кавычек-лапок (« и ») и длинного тире (—). Через некоторое время я наткнулся в сети на заметку в блоге Ильи Бирмана о создании им специальной типографской раскладки для непосредственного ввода кучи юникодных символов.
Идея мне понравилась и я решил реализовать эту идею под линуксом.
Первая версия была опубликована в моём блоге в августе 2006 года. Раскладка представляла собой файл конфигурации XKB, который нужно было вручную (или скриптом) «скармливать» X-серверу. Кроме того, в этой раскладке был жёстко прошит способ переключения раскладок (RShift+LShift), а сменить его было непросто. Такой вариант был вполне работоспособен до первого масштабного изменения системных файлов данных XKB. За прошедшие два года такое случалось раза три и мысль переделать всё правильно созрела окончательно.
Итак, основные требования:
- в системе должны остаться две «главные» раскладки — русская (йцукен) и английская (qwerty), переключение между ними должно осуществляться циклически выбранной пользователем комбинацией (причём выбранной неважно каким методом, неважной в какой десктопной среде);
- переключение на дополнительную раскладку (типографскую) должно быть временным и осуществляться при помощи нажатия и удержания правой клавиши Alt;
- раскладка должна интегрироваться в системную базу 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, то в них слой с типографскими символами можно включить в окне конфигурации переключалки языков.
Использование¶
На рисунке представлена схема раскладки: на каких клавишах стандартной клавиатуры расположены новые символы.
На тёмно-красном фоне изображены символы, которые получаются при одновременном нажатии AltGr (т.е. правого Alt) и соответствующей клавиши на основной части клавиатуры. Например, чтобы напечатать символ параграфа (§), необходимо нажать клавишу «AltGr» и, удерживая её, нажать клавишу «4» в верхнем ряду клавиатуры.
На зелёном фоне изображены символы, которые получаются при одновременном нажатии AltGr, Shift и нужной клавиши. Например, чтобы напечатать символ цента (¢), нажмите «AltGr», не отпуская её, нажмите Shift, и удерживая обе клавиши, нажмите клавишу «C».
Важные замечания¶
За время использования раскладки она постепенно изменялась, обрастала новыми символами, теряла старые. И выкладываемая сейчас версия сильно отличается от первоначальной, а также несколько отличается от второй версии типографской раскладки от Ильи Бирмана. В частности, в моей версии некоторые символы перемещены на другие клавиши (например, символ ударения не AltGr+A, а символ «≈» на AltGr+Shift+~). Также в моей версии нет всех композиционных символов для формирования акцентированных букв, кроме символа ударения; нет букв дореволюционной типографики и т.д. Также в моей раскладке нет композитных символов (которые часто используются для создания букв типа ä или ô), пользуйтесь вместо этого XCompose.
Раскладка протестирована и работает на Debian Lenny (более поздние проверены на Ubuntu 12.04, Debian Squeeze), его работа на других операционных системах не гарантируется, но вероятнее всего будет работать. Если у вас есть вопросы или предложения, можете оставить их в виде комментария к этой записи или пишите прямо на емейл [email protected].
Можно использовать Win клавиши :)
Раскладка работает просто охуенно!
В принципе, я был бы не против запихать оную раскладку в xkeyboard-config, если б кто привел ее к более человеческому виду, как принято в symbols/ru
Постараюсь допинать, надо будет только получше изучить XKB.
А отдельно пару клавиш можно переназначить?
Можно, разрешаю :)
Слушай а может ты вместе с besisland объеденишь усилия. Он вот тоже своё поделие сделал http://besisland.name/rukbi/install/ Я хочу простой готовый deb пакет для убунты а про иксы даже не знать.
Не вижу смысла, мой конфиг уже в дистрибутиве.
В последней убунте есть некоторые дополнительные сочетания клавиш. А такой же удобной картинки с ними у Вас не найдётся?
Надо посмотреть на эти дополнительные сочетания, я про них ничего не знаю.
А где указан способ переключения на третью раскладку?
Это юзер сам выбирает. «3rd level shortcut», у меня это правый Alt.
Ошибка, да. Исправил, добавил параметр конфигурации переключалки.
Здравствуй. Как всегда что-то да не работает. Раскладка ставится прекрасно, но после перезагрузки слетает. Приходится ещё раз прописывать конфигурации и тогда снова работает. Что делать?
Пользуйтесь средствами DE для установки раскладки, данная раскладка уже входит в состав XKB и включается опцией typo.
Сергей, поставил Вашу раскладку, и столкнулся с проблемой: в русской раскладке вместо "1" печатается "¹", вместо 4 — "‰", вместо дефиса — длинное тире и т. д. . Пытался править конфиг клавиатуры в xorg.conf, но как-то не преуспел. Может Вы подскажете что я делаю не так?
Section "InputDevice"
EndSection
Пользуйтесь средствами DE для установки раскладки, данная раскладка уже входит в состав XKB и включается опцией typo. Не нужно уже ничего прописывать в xorg.conf.
Да, вот с типом переключения надо бы подумать. Shift+Shift -- самое неудобное, что можно придумать ибо две руки надо задействовать. Капс тоже иногда нужен и должен выполнять свою функцию. Соответственно остаются комбинации одной рукой. Alt+Shift//Ctrl+shift/Ctrl+Alt/Shift+Caps...
А как бы здесь так сделать, чтобы основные раскладки переключались по Caps Lock, а не по LShift+RShift?