Что такое ibus в linux

Ввод текста в Linux (ibus)

Если ваша клавиатура размечена под латиницу или кириллицу, а вам приходится набирать тексты на другом языке, особенно, используя сложные, неалфавитные письменности, то данная заметка о системах ввода в Linux (упрощенно «клавиатурных раскладках») может вас заинтересовать.

Заранее прошу прощение за нечёткую терминологию и не претендую на исчерпывающее техническое описание. Основная задача статьи — описание возможностей, а не реализация.

Методы ввода

Основным методом ввода символов (input method, IM) в Linux является XKB, он установлен по умолчанию и активируется сразу после установки операционной системы. XKB предназначен для работы с алфавитными письменностями, и не может обслуживать комплексные письменности типа китайских иероглифов или силлабариев Индии и Африки. Систему можно настроить на работу с не более чем 4 раскладками. Последнее ограничение можно обойти, повесив на горячие клавиши вызов команды с нужной комбинацией параметров для каждого языка.

Если требуется большая гибкость, то следует перейти к фреймворкам (input method framework). Основные представители подобных систем в Linux: IBus, SCIM, Fcitx. Сам по себе фреймворк текст вводить не умеет, а различные письменности должны подключаться в виде плагинов (engines). Из опыта использования IBus и Fcitx могу сказать, что обе системы поддерживают примерно равное количество плагинов. Зачастую, это могут быть практически одни и те же плагины. Например, метод ввода Pinyin для китайского языка реализован в виде самостоятельной библиотеки libpinyin и при подключении через IBus или Fcitx предоставляет идентичные возможности.

Можно считать, что за последние 6-7 лет разница между фреймворками нивелировалась, хотя какие-то особенности могут проявляться. Далее я перечислю основные плагины IBus, как более знакомой мне системы.

Например, русская раскладка описана следующим образом:

Где строки include собирают конфигурацию из готовых шаблонов. Соответственно, из файла «ru» берётся вариант русской раскладки «winkeys». Потом дополняется раскладкой «base» из файла «typo» и задаётся переключатель третьего слоя AltGr (см. файл «level3»), что аналогично команде:

При желании, можно внести собственные изменения. В приведённом выше примере знак ударения «U+0301» (Combining Acute Accent) вынесен на сочетание AltGr+

Далее, созданную раскладку нужно внести в файл /usr/share/ibus/component/simple.xml в следующем виде:

Второй метод ввода — m17n. Это довольно богатая библиотека клавиатурных раскладок для разнообразных письменностей. IBus имеет собственный схожий метод ввода ibus-table, который описан как обладающий «чуть меньшими возможностями». Мне приходилось использовать последний для создания раскладки с однозначным соответствием между латинскими буквами и буквами требуемого алфавита без задействования сложно логики, поэтому я не могу судить, какая из двух систем более функциональная и выразительная — описание раскладки в формате m17n или ibus-table. Метод ibus-table включает в себя любопытную раскладку «LaTeX» для ввода символов в соответствующей нотации: » \Delta » для «Δ», » \ge » для «≥» и т.д.

Переключение раскладок

Большую часть времени я работаю с языковыми парами: русский-английский, китайский-испанский и т.п. Поэтому предпочитаю иметь одну горячую клавишу для переключения между двумя последними раскладками (CapsLock), а сами раскладки переключаются по отдельным горячим клавишам (Win + 1…9 на цифровом блоке). Таким образом, сначала я задаю рабочие раскладки, Win+1 (en) и Win+2 (ru), а далее переключаюсь между ними по CapsLock (en ru).

В IBus можно задать две горячих клавиши: одна для циклического переключения по списку раскладок, вторая для последних двух раскладок. Так же можно выбирать нужную раскладку через консоль и, соответственно, назначить скрипт на горячую клавишу.

Замечу, что переназначить CapsLock с помощью xmodmap не получится, так как IBus сбрасывает подобные настройки. Поэтому я предпочитаю через udev глобально переопределять CapsLock как F14 (файл /etc/udev/hwdb.d/90-custom-keyboard.hwdb ):

И использовать уже F14 как горячую клавишу в IBus. По моему опыту это обеспечивает наиболее стабильную конфигурацию.

Подробнее о настройке udev см. в конце статьи.

Виртуальная клавиатура

Промышленно выпускаются клавиатуры, размеченные под определённую письменность, лишь для языков с большим количеством пользователей — например, для русского (ЙЦУКЕН). Ни в Армении, ни в Грузии вы не сможете купить клавиатуру с клавишами, подписанными буквами национальных алфавитов. Аналогично, в Казахстане и Узбекистане используют русско-английские клавиатуры и вынуждены учить, где располагаются буквы, не входящие в стандартную латиницу или кириллицу.

Если вы осваиваете новую раскладку, советую воспользоваться виртуальной клавиатурой. Мне нравитcя Onboard, потому что она самостоятельно подстраивается под активную раскладку и обновляется при переключении на другую. Но это работает только с xkb (также при использовании xkb через IBus).

Onboard очень удобна для тестирования раскладок xkb и позволяет посмотреть назначенные символы на всех слоях (AltGr и т.п.).

Заключение

Не все программы корректно поддерживают языковые фреймворки. В частности, Sublime Text 3 работает лишь со SCIM, а используя IBus, независимо от выбранной раскладки, будет печатать исключительно латинские буквы.

Я довольно давно использую IBus, а другие системы знаю очень поверхностно. По отзывам в интернете, Fctix описывается как более функциональный и лучше адаптированный для ввода китайского текста. В любом случае, при работе с китайскими текстами IBus меня полностью устраивает и различия должны быть непринципиальными. Последний раз, когда мне приходилось использовать Fctix (2 года назад), этот фреймворк не позволял переключать раскладки, если курсор не находится в текстовом поле. Надеюсь, к настоящему моменту эту недоработку исправили.

Ещё одно подспорье для работы с разнообразными письменностями — силиконовые накладки на клавиатуру. Китайские интернет-маркеты предлагают накладки (保护膜 или 键盘膜) для Apple Magic Keyboard под самые различные письменности. Пример некитайского дистрибьютора. Но учтите, что выпускалось три поколения Apple Magic (и каждая в модификациях для США, Европы и Японии), а китайские реплики отличаются линейными размерами и расположением клавиш. Временами, я сожалению, что не существует единого стандарта на компьютерные клавиатуры.

Цифровой код нажатой клавиши несколько раз меняет своё значение.

Из приведённой последовательности видно, что переназначение клавиш на этапе scancode > keycode предпочтительнее, так как это не вызывает пересечений с KXB.

Трансляция scancode в keycode производится для каждого устройства ввода независимо, поэтому сперва требуется узнать уникальный идентификатор клавиатуры (на самом деле evdev работает также с большим классом периферийных устройств, имеющих кнопки — от мышек до принтеров и веб-камер). Пользователи Arch Linux могут воспользоваться следующим скриптом (для других дистрибутивов, возможно, потребуется корректировка путей):

Одно и то же устройство может быть представлено в системе в нескольких экземплярах под разными именами, но идентификатор будет одинаковым. Например, моя клавиатура определяется как два устройства:

Примечание: идентификатор можно сокращать (например, до b0003v1a2cp0e24* ), что бывает полезно при создании единых правил для серии однотипных моделей. Звёздочка “*” здесь играет роль символа подстановки (wildcard).

Теперь нужно создать файл 90-custom-keyboard.hwdb в /etc/udev/hwdb.d/ со следующим содержанием (образцы см. в /usr/lib/udev/hwdb.d/60-keyboard.hwdb ):

Строка KEYBOARD_KEY начинается с пробела, это важно. Обновите конфигурацию:

В последующем, при перезагрузке или переподключении устройства конфигурация будет обновляться автоматически.

Получить scancode можно с помощью программы evtest. Сперва, нужно определиться с номером eventXX, для этого запустите команду и найдите свою клавиатуру:

Выбираем «Keyboard-event-kbd» и узнаем нужный номер (в данном примере — 10). Теперь можно обратиться к evtest:

При нажатии клавиши «CapsLock», получается код «70039» — это и есть искомый scancode.

Источник

Lubuntu.ru

Русскоязычное сообщество Lubuntu Linux

IBus и комбинации для переключения раскладки. Нет нужной.

Модератор: Vadim

IBus и комбинации для переключения раскладки. Нет нужной.

Сообщение Stack » 26 апр 2014, 15:55

Растолкуйте, пожалуйста. Вот я поставил систему. У меня в панели индикатор раскладки, у меня в панели индикатор IBus. По Ctrl+space переключаются раскладки. Типа: всё работает.

Вот я хочу изменить комбинацию кнопок. Полазил по менюшкам. Я могу её поменять. Но почему-то что-то типа Ctrl+space, Ctrl+H можно сделать, а вот Alt+Shift, Ctrl+Alt, или нужный Caps Lock она не позволяет назначить.

Почему нельзя CapsLock принять как кнопку для переключения?! Видимо есть причина. Какая?
Ну, CapsLock это сложно. Там тогда неявно задействуется Ctrl+CapsLock, для смены регистра. Можно понять, почему нет.

А чего ж Ctrl+Shift нельзя? Вроде ж избитая комбинация.

P.S.S. А то может IBus это мега удобно, а я всё по старинке, как раньше в Linux.

Re: IBus и комбинации для переключения раскладки. Нет нужной

Сообщение adventurer » 26 апр 2014, 17:39

Re: IBus и комбинации для переключения раскладки. Нет нужной

Сообщение aleks@ » 26 апр 2014, 17:45

Re: IBus и комбинации для переключения раскладки. Нет нужной

Сообщение Stack » 26 апр 2014, 23:01

Нашёл. Спасибо. Там же увидел Advanced setxkbmap options. Т.е., используя setxkbmap напрямую, я, видимо, использую всё же тот же механизм, что доступен через этот апплет для LXPanel. Я у себя «глушу» LXPanel, запускаю свою, и заинтересовало «как правильно» и без апплета в панели настроить это. Видимо, правильно делал.

Возникло впечатление, что значок для IBus это что-то совсем параллельное и ненужное простому пользователю. Можно какой-то профит получить от IBus? Значок в трее можно убрать, но ведь при дефолтных настройках он зачем-то там показан. Когда он нужен?

Два места, настраивают одно и тоже (с разной гибкостью). Причём второе место более удобное, но по дефолту самое ненастроенное. Вероятно, это тупо вопрос трудоёмкости поддержки дистра и большого зоопарка раскладок. Видимо, в инсталляторе не так просто расписать все правильные варианты настройки раскладок. И сделано «как есть», в рамках доступных человеческих сил. Если я правильно догадываюсь. Если с IBus напрямую профит получить нельзя, для обычного пользователя.

Источник

Что такое ibus в linux

IBus (Intelligent Input Bus) is an input method framework, a type of application that allows for easily switching between different keyboard layouts. When combined with an input method editor, it also allows for typing non-Latin characters using a keyboard that does not natively support them.

Contents

Installation

Install the ibus package.

Additionally, see Input method#List of available input method editors for a comprehensive list of available input method editors.

Integration

Set at least the following environment variables:

To launch IBus on user login, create an autostart entry with the following command:

On the next login IBus will start along with the user session.

Configuration

See Locale for help with adding non-Latin language support to your system.

See Fonts#Non-latin scripts for a non-exhaustive list of available non-Latin fonts.

GNOME

GNOME uses IBus by default, so you can simply go to Settings > Keyboard > Input Sources and add a keyboard layout for the language of your choice.

Other desktop environments

To launch the IBus preferences window, you can:

The points of interest here are the keyboard shortcut for Next input method (which is the one you will want to use instead of the default shortcut provided by your desktop environment) and the Input Method tab where you can add or remove the different keyboard layouts (which is where you will want to do this instead of your desktop environment’s default layout manager).

Tips and tricks

Emoji input

IBus supports the input of emoji icons. Type Ctrl+. and you will see the input prompt change to an underlined e character. You can then type the symbol or name of the emoji you want (e.g. :) or face) and press Space to render it. If you are satisfied with the result press Enter to submit it and exit emoji input mode, or press Space for a second time to open a dialog where you can further customize your desired emoji.

See ibus-emoji(7) for more information.

Unicode input

IBus supports the input of complex Unicode characters. Type Ctrl+Shift+u and you will see the input prompt change to an underlined u character. You can then type the code of the Unicode character you want and press Space or Enter to render and submit it.

Tray icon color

By default, IBus uses a dark blue color to display the language symbol of the currently active layout (e.g. EN). The color value is stored in a gsettings schema, so if you wish to change it you can run the following command:

The string ‘COLOR’ should conform to the following guidelines:

Layout switcher display delay

When pressing the Next input method hotkey, IBus displays a small dialog to signify the layout switch. By default this dialog is displayed 400ms after pressing the key, but this value can be changed by the user, with some interesting choices being ‘0’ to display the dialog immediately without any delay, or a negative value (e.g. ‘-1’) to switch the layouts without showing the window at all (which may be useful if you only use two layouts and simply switch from one to the other).

The value is stored in a gsettings schema, so if you wish to change it you can run the following command:

To show the currently stored value, run the following command:

The string ‘VALUE’ should conform to the following guidelines:

Using modifier key combinations to switch layouts

For some reason, the IBus preferences GUI will not let you use a subset of modifier key combinations (e.g. Alt+Shift_R ) as the layout switching hotkey. However, IBus stores the hotkey as a string in a gsettings schema, so you can still use such combinations by directly editing that string:

Firejail

This section is being considered for removal.

Sandboxed programs may not work with some IBus input methods due to the input socket being invisible to the sandbox[1][2][3]. For example, Firefox sandboxed with Firejail may not register inputs given by IBus Anthy.

A workaround is to make IBus use XIM by changing the exported environment variables (see #Integration) like so:

rxvt-unicode

For rxvt-unicode to work correctly with IBus, you may need to add the following lines to

Troubleshooting

Missing packages due to pyenv

If using pyenv to manage python versions and configuration, ibus dependencies may not be installed on the set global python version. This can happen if the global version is not the one managed by the system (to which dependencies that ibus depends on, such as gi are installed). This may result in a running but non-functional ibus setup (ibus is in the system tray, but preferences can not be opened, etc). One way to verify this issue is to attempt to run ibus-setup and see if any missing dependency errors arise.

To fix this issue, change your pyenv global version to the system version:

Settings removed after restart

If you find your settings are being removed consistently after restart (input methods being reverted), you can confirm the engines set to be preloaded and the order in which they will be loaded:

To ensure anthy gets loaded in this case, add it to the org.freedesktop.ibus.preload-engines list:

Changes your changes should be reflected immediately, and should persist across restarts.

Источник

Ввод текста в Linux (ibus)

Если ваша клавиатура размечена под латиницу или кириллицу, а вам приходится набирать тексты на другом языке, особенно, используя сложные, неалфавитные письменности, то данная заметка о системах ввода в Linux (упрощенно «клавиатурных раскладках») может вас заинтересовать.

Заранее прошу прощение за нечёткую терминологию и не претендую на исчерпывающее техническое описание. Основная задача статьи — описание возможностей, а не реализация.

Методы ввода

Основным методом ввода символов (input method, IM) в Linux является XKB, он установлен по умолчанию и активируется сразу после установки операционной системы. XKB предназначен для работы с алфавитными письменностями, и не может обслуживать комплексные письменности типа китайских иероглифов или силлабариев Индии и Африки. Систему можно настроить на работу с не более чем 4 раскладками. Последнее ограничение можно обойти, повесив на горячие клавиши вызов команды с нужной комбинацией параметров для каждого языка.

Если требуется большая гибкость, то следует перейти к фреймворкам (input method framework). Основные представители подобных систем в Linux: IBus, SCIM, Fcitx. Сам по себе фреймворк текст вводить не умеет, а различные письменности должны подключаться в виде плагинов (engines). Из опыта использования IBus и Fcitx могу сказать, что обе системы поддерживают примерно равное количество плагинов. Зачастую, это могут быть практически одни и те же плагины. Например, метод ввода Pinyin для китайского языка реализован в виде самостоятельной библиотеки libpinyin и при подключении через IBus или Fcitx предоставляет идентичные возможности.

Можно считать, что за последние 6-7 лет разница между фреймворками нивелировалась, хотя какие-то особенности могут проявляться. Далее я перечислю основные плагины IBus, как более знакомой мне системы.

Например, русская раскладка описана следующим образом:

Где строки include собирают конфигурацию из готовых шаблонов. Соответственно, из файла «ru» берётся вариант русской раскладки «winkeys». Потом дополняется раскладкой «base» из файла «typo» и задаётся переключатель третьего слоя AltGr (см. файл «level3»), что аналогично команде:

При желании, можно внести собственные изменения. В приведённом выше примере знак ударения «U+0301» (Combining Acute Accent) вынесен на сочетание AltGr+

Далее, созданную раскладку нужно внести в файл /usr/share/ibus/component/simple.xml в следующем виде:

Второй метод ввода — m17n. Это довольно богатая библиотека клавиатурных раскладок для разнообразных письменностей. IBus имеет собственный схожий метод ввода ibus-table, который описан как обладающий «чуть меньшими возможностями». Мне приходилось использовать последний для создания раскладки с однозначным соответствием между латинскими буквами и буквами требуемого алфавита без задействования сложно логики, поэтому я не могу судить, какая из двух систем более функциональная и выразительная — описание раскладки в формате m17n или ibus-table. Метод ibus-table включает в себя любопытную раскладку «LaTeX» для ввода символов в соответствующей нотации: » \Delta » для «Δ», » \ge » для «≥» и т.д.

Переключение раскладок

Большую часть времени я работаю с языковыми парами: русский-английский, китайский-испанский и т.п. Поэтому предпочитаю иметь одну горячую клавишу для переключения между двумя последними раскладками (CapsLock), а сами раскладки переключаются по отдельным горячим клавишам (Win + 1…9 на цифровом блоке). Таким образом, сначала я задаю рабочие раскладки, Win+1 (en) и Win+2 (ru), а далее переключаюсь между ними по CapsLock (en ru).

В IBus можно задать две горячих клавиши: одна для циклического переключения по списку раскладок, вторая для последних двух раскладок. Так же можно выбирать нужную раскладку через консоль и, соответственно, назначить скрипт на горячую клавишу.

Замечу, что переназначить CapsLock с помощью xmodmap не получится, так как IBus сбрасывает подобные настройки. Поэтому я предпочитаю через udev глобально переопределять CapsLock как F14 (файл /etc/udev/hwdb.d/90-custom-keyboard.hwdb ):

И использовать уже F14 как горячую клавишу в IBus. По моему опыту это обеспечивает наиболее стабильную конфигурацию.

Подробнее о настройке udev см. в конце статьи.

Виртуальная клавиатура

Промышленно выпускаются клавиатуры, размеченные под определённую письменность, лишь для языков с большим количеством пользователей — например, для русского (ЙЦУКЕН). Ни в Армении, ни в Грузии вы не сможете купить клавиатуру с клавишами, подписанными буквами национальных алфавитов. Аналогично, в Казахстане и Узбекистане используют русско-английские клавиатуры и вынуждены учить, где располагаются буквы, не входящие в стандартную латиницу или кириллицу.

Если вы осваиваете новую раскладку, советую воспользоваться виртуальной клавиатурой. Мне нравитcя Onboard, потому что она самостоятельно подстраивается под активную раскладку и обновляется при переключении на другую. Но это работает только с xkb (также при использовании xkb через IBus).

Onboard очень удобна для тестирования раскладок xkb и позволяет посмотреть назначенные символы на всех слоях (AltGr и т.п.).

Заключение

Не все программы корректно поддерживают языковые фреймворки. В частности, Sublime Text 3 работает лишь со SCIM, а используя IBus, независимо от выбранной раскладки, будет печатать исключительно латинские буквы.

Я довольно давно использую IBus, а другие системы знаю очень поверхностно. По отзывам в интернете, Fctix описывается как более функциональный и лучше адаптированный для ввода китайского текста. В любом случае, при работе с китайскими текстами IBus меня полностью устраивает и различия должны быть непринципиальными. Последний раз, когда мне приходилось использовать Fctix (2 года назад), этот фреймворк не позволял переключать раскладки, если курсор не находится в текстовом поле. Надеюсь, к настоящему моменту эту недоработку исправили.

Ещё одно подспорье для работы с разнообразными письменностями — силиконовые накладки на клавиатуру. Китайские интернет-маркеты предлагают накладки (保护膜 или 键盘膜) для Apple Magic Keyboard под самые различные письменности. Пример некитайского дистрибьютора. Но учтите, что выпускалось три поколения Apple Magic (и каждая в модификациях для США, Европы и Японии), а китайские реплики отличаются линейными размерами и расположением клавиш. Временами, я сожалению, что не существует единого стандарта на компьютерные клавиатуры.

Цифровой код нажатой клавиши несколько раз меняет своё значение.

Из приведённой последовательности видно, что переназначение клавиш на этапе scancode > keycode предпочтительнее, так как это не вызывает пересечений с KXB.

Трансляция scancode в keycode производится для каждого устройства ввода независимо, поэтому сперва требуется узнать уникальный идентификатор клавиатуры (на самом деле evdev работает также с большим классом периферийных устройств, имеющих кнопки — от мышек до принтеров и веб-камер). Пользователи Arch Linux могут воспользоваться следующим скриптом (для других дистрибутивов, возможно, потребуется корректировка путей):

Одно и то же устройство может быть представлено в системе в нескольких экземплярах под разными именами, но идентификатор будет одинаковым. Например, моя клавиатура определяется как два устройства:

Примечание: идентификатор можно сокращать (например, до b0003v1a2cp0e24* ), что бывает полезно при создании единых правил для серии однотипных моделей. Звёздочка “*” здесь играет роль символа подстановки (wildcard).

Теперь нужно создать файл 90-custom-keyboard.hwdb в /etc/udev/hwdb.d/ со следующим содержанием (образцы см. в /usr/lib/udev/hwdb.d/60-keyboard.hwdb ):

Строка KEYBOARD_KEY начинается с пробела, это важно. Обновите конфигурацию:

В последующем, при перезагрузке или переподключении устройства конфигурация будет обновляться автоматически.

Получить scancode можно с помощью программы evtest. Сперва, нужно определиться с номером eventXX, для этого запустите команду и найдите свою клавиатуру:

Выбираем «Keyboard-event-kbd» и узнаем нужный номер (в данном примере — 10). Теперь можно обратиться к evtest:

При нажатии клавиши «CapsLock», получается код «70039» — это и есть искомый scancode.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • что такое hyper v в windows 10 как выключить
  • Что такое html программа
  • Что такое hook в программировании
  • что такое hiberfil sys windows 10
  • Что такое hello world в программировании

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии