То, как я добавил новую Compose-последовательность (пересобрав метод ввода Latin-Plus) — было решением неудобным и негибким. Недавно же я узнал, как можно гораздо проще и быстрее задавать произвольные Compose-последовательности. Для этого, оказывается, достаточно отредактировать файл
~/.XCompose. Об этом и пойдёт речь.1. Надо включить клавишу Compose (об этом я уже писал);
2. Маленькая хитрость. Вначале надо настроить систему так, чтобы библиотеки Qt и особенно GTK использовали метод ввода X Input Method (xim). Для этого в Debian можно установить
im-switch, запустить im-switch -c и выбрать default-xim из списка. В других системах, видимо, надо присвоить переменным окружения GTK_IM_MODULE и QT_IM_MODULE значение xim (например, поместить GTK_IM_MODULE=xim в /etc/environment). Если этот шаг пропустить, все последующие настройки на GTK приложения распространяться не будут (они будут использовать свой метод ввода). С Qt приложениями, если честно, я не экспериментировал, но видимо и они могут иметь отдельную настройку;3. После этого можно создать в домашнем каталоге файл
~/.XCompose. Первой его строчкой можно включить все стандартные комбинации клавиш:include "/usr/share/X11/locale/en_US.UTF-8/Compose"
а затем можно и задать любые дополнительные последовательности (по образцу как в
/usr/share/X11/locale/en_US.UTF-8/Compose). Например, <Multi_key> <period> <space> : "…" U2026 # HORIZONTAL ELLIPSIS, многоточие
<Multi_key> <apostrophe> <apostrophe> : "́" U0301 # ударение
Всё, в запускаемых теперь приложениях должны работать новые комбинации. В частности, при нажатии Compose + точка + пробел будет набираться знак многоточия (который отличается от трёх точек), а если после буквы нажать Compose + два раза апостроф — над буквой появится знак ударения.
Таким образом можно вводить любые сиволы из уникодной таблицы (найти нужный символ поможет
gnome-character-map). Достаточно вставить этот символ в кавычки после описания последовательности. Можно таким образом создавать целые клавиатурные макросы. В частности, я попробовал повесить <a href="" ></a> на сочетание Compose+a+h. Работает! Желающие могут взглянуть на мой файл ~/.XCompose (кодировка UTF-8). Я добавил туда ещё немного математики и греческие буквы.Теперь можно прямо в e-mail писать: «∀ε>0 ∃δ>0 ∀x,|x-x₀|<δ : …» :)
Информацию я почерпнул из этих источников:
☙ International text support on Linux
☙ Compose key magic
Дополнение: в комментариях Shoorick дал ссылку на свой .XCompose, в котором есть дореволюционная буква «ѣ», довольно удобные кавычки для русской раскладки, башкирские буквы и набор разных стрелок (← → ↗ ↘ ⇐ ⇒ …): http://shoorick.ru/lj/txt/dotXCompose_as

11 коммент.:
Спасибо за статью. Очень удобная функция. :)
А что надо сделать для того, что бы изменения в ~/.XCompose вступили в силу? Перезапустить X-сервер?
У меня изменения вступают в силу для новозапущенных приложений, то есть: редактирую ~/.XCompose, добавляя новую последовательность, закрываю gedit, открываю gedit — новая последовательность работает.
Работает под FreeBSD / KDE. Правда, общесистемный список Compose-последовательностей хранится в /usr/local/lib/X11/locale/en_US.UTF-8/Compose
ЗЫ Ещё файлик: со стрелками (но работают ещё не все), дореволюционными и башкирскими буквами — http://shoorick.ru/lj/txt/dotXCompose_as
Спасибо, полезная штука...
А может кто-нибудь знает как сделать раскладку-транслитерацию? Так, чтобы при переключении на нее и нажатии на "ж" вводилось "zh", "п" - "p" и т.д.
2shoorick:
Спасибо за файлик! Дореволюционную ѣ, стрелки и ≠ скопировал к себе. Хорошие мнемоники придумал!
2Денис:
Как сделать транслитерационную раскладку, я не знаю. Посмотри статью Creating custom keyboard layouts for X11 using XKB. Возможно, поможет.
Вместо пакета im-switch можно задать переменные в файле /etc/enviroment:
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
Спасибо огромное!
Спасибо, если-бы я ещё текст не по-диагонали читал, сразу бы пронял про XIM :)
Спасибо, превосходный совет, многоточия как раз не хватало.
А где узнать как правильно писать <определения клавишь>?
например я хочу на русские что-то забиндить кнопки
Здравствуйте, Ярослав!
<Названия_клавиш> можно подглядеть в файле /usr/share/X11/xkb/symbols/ru, где определены разные русские раскладки клавиатуры. Искать идентификаторы вида Cyrillic_io («ё») и Cyrillic_IO («Ё»).
Например, там есть такая строчка:
«key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };»
означающая, что при нажатии на тильду в русской расскладке набирается «ё» или«Ё» соответственно. И можно делать сочетания такого рода, работающие в русской раскладке:
«<Multi_key> <Cyrillic_be> <Cyrillic_be> : "„" # открывающая кавычка-лапка на Compose-б-б
<Multi_key> <Cyrillic_io> <Cyrillic_io> : "“" # закрывающая кавычка-лапка на Compose-ё-ё
<Multi_key> <Cyrillic_e> <Cyrillic_e> : "“" # закрывающая кавычка-лапка на Compose-э-э»
Отправить комментарий