Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Аппаратное обеспечение

Добавление поддержки расширенных символов

Оригинал: Adding extended character support
Автор: Bruce Byfield
Дата: 6 декабря 2007
Перевод: Андрей Матвеев aka arilou649
Дата перевода: 11 декабря 2007

При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!

Если вам когда–либо приходилось вводить символы с диакритическим знаком, например букву «e» с акутом (é) – не говоря уже о символах, не встречающихся в западно–европейских языках – то вы наверняка заметили, что клавиатуры со стандартной английской раскладкой, применяемые пользователями GNU/Linux, оказываются едва ли более приспособлены для этого, чем печатные машинки. Все же процедура добавления поддержки расширенных символов и нескольких раскладок клавиатуры в последние годы значительно упростилась. Сегодня можно быстро добавить поддержку расширенных символов в GNOME и KDE. Если же вы по каким–либо причинам не используете эти окружения рабочего стола, для оптимизации ввода можно прибегнуть к другим методам.

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

  • Мертвые клавиши (deadkeys): клавиши, которые не осуществляют ввода сами по себе, а лишь модифицируют вводимый символ. Обычно они добавляют к символу диакритический знак. К примеру, во многих раскладках нажатие клавиши гравис/тильда (`/~ ) перед символьной клавишей используется для ввода таких символов как à или ã.
  • Compose, AltGraph и multi_keys: эти клавиши изменяют вводимый символ после нажатия следующей клавиши, подобно тому, как Shift обычно превращает строчные буквы в заглавные. Как правило AltGraph это правый Alt, а Compose правая клавиша Windows или Menu.Термин «multi_key» часто используется для обозначения клавиши Compose в X Window System. Вообще из этих клавиш необходима только одна, хотя система позволяет использовать все три. Символы, вводимые с помощью этих клавиш определены в файле /usr/X11R6/lib/X11/locale./locale name/ Compose, но на каждой конкретной машине работать будут лишь некоторые. Так что будьте готовы к экспериментам.
  • Переключатель третьего уровня: в стандартной английской раскладке каждая клавиша вводит один определенный символ. При нажатой клавише Shift вводится другой символ. С помощью переключателя третьего уровня любой клавише можно назначить третий символ. К примеру, в некоторых раскладках такой переключатель используется перед символом «y» для ввода символа японской йены (¥) или перед символом «l» для ввода символа фунта стерлингов (£).

Любые из этих клавиш могут быть заданы в выбранной вами раскладке или определены по вашему выбору. Как в KDE, так и в GNOME интерфейс подразумевает, что пользователю знакомы эти типы клавиш.

Поддержка в GNOME и KDE

Поддержка расширенных символов схожа в последних версиях GNOME и KDE. В GNOME – в зависимости от вашего дистрибутива – настройки клавиатуры доступны через меню System –> Administration или System –> Preferences. В KDE это Regional and Accessibility –> Keyboard layout.

В обоих десктопах для включения поддержки любого из десятков языков используйте вкладку Layout/Layouts. Количество языков зависит от используемого вами дистрибутива. Разумеется, для нужного вам языка требуется подходящий шрифт. После изменения настроек следует выйти из системы и войти снова, чтобы изменения вступили в силу.

Если вы используете преимущественно английскую раскладку клавиатуры и в первую очередь хотели бы использовать диакритические знаки, то вам следует выбрать раскладку по умолчанию и изучить ее варианты. К примеру, помимо раскладки Dvorak и прочих, американская раскладка имеет три интернациональных варианта: один с клавишами AltGraph и deadkeys, другой только с deadkeys и третий, обозначенный в списке как Alternative International.

К сожалению, все эти опции бесполезны. На своей машине, где установлен дистрибутив Fedora 8, мне не удалось добиться нормальной работы варианта с AltGraph и deadkeys. Опция с deadkeys работала, но имела один недостаток: каждый раз, когда требовалось ввести простой апостроф вместо символа с акутом, нужно было нажимать пробел. К такому сложно привыкнуть, особенно если вы набираете вслепую.

Вместо этого я рекомендую продолжать использовать вашу текущую раскладку, отконфигурировав ее во вкладке Options в GNOME, либо во вкладке Xkb Options в KDE. Помимо опций, позволяющих изменить поведение клавиши Caps Lock и числовой клавиатуры, а также в дополнение к опции переназначения функции клавиши Ctrl, вкладка Layout Options содержит некоторые дополнительные настройки, связанные с поддержкой расширенных символов. Одна опция задает переключатель раскладок, Другая определяет переключатель третьего уровня и используется вместе с третьей опцией для назначения символа евро (€) одной из нескольких клавиш.

Важно отметить, что в любой из этих вкладок можно определить клавишу Compose. Эта опция вступает в действие немедленно, без перезапуска пользовательской сессии. Я убедился на опыте, что эта опция наиболее полезна для обеспечения поддержки расширенных символов.

Решение c использованием файла .Xmodmap

Еще несколько лет назад, до того как поддержка расширенных символов появилась в окружениях рабочего стола, настройка опций в файле .Xmodmap была самым легким способом решения задачи. Этот метод по–прежнему работает в тех случаях, если настройки GNOME и KDE не дают желаемого результата (я столкнулся с такой проблемой в дистрибутиве Debian Lenny). Этот метод годится также, если вы используете иной графический интерфейс.

Этот метод требует локали UTF–8, которая должна быть загружена в системе или в окружении рабочего стола. Локаль должна быть указана в файле /etc/X11/xorg.conf в секции InputDevice:

Option "XkbLayout" "en_US.utf8"

Помимо этого, нужно определить клавишу multi_key. Откройте терминал, введите команду xev и нажмите ту клавишу, которая должна быть настроена как multi_key. В окне терминала найдите значение переменной keycode, которое зависит от типа вашей клавиатуры.

Откройте текстовый редактор и, используя значение keycode, введите следующую строку:

keycode <keycode> = Multi_key

Сохраните файл под именем .Xmodmap в вашей домашней директории. Затем перезапустите X Window System или перезагрузитесь для применения новых настроек.

Если поддержка расширенных символов не заработала после перезагрузки, удостоверьтесь, что в файле /etc/X11/xorg.conf указана правильная раскладка клавиатуры, и, что указанный язык имеет кодировку UTF–8. Также следует отключить опцию «nodeadkeys». Возможно вам понадобится определить клавишу multi_key в файле xorg.conf. К примеру, для назначения этой функции левой клавише Windows добавьте следующую строку:

Option "XkbOptions" "compose:lwin,grp:switch"

Если вы используете другую клавишу, то вам придется лишь изменить ту часть строки, которая определяет нужную клавишу: к примеру, для назначения правой клавиши Windows нужно указать «rwin» вместо «lwin», либо «ralt» для правой клавиши Alt.

Продвинутые методы

Если ни одно из описанных решений не дало вам поддержки расширенных символов, у вас есть по меньшей мере две альтернативы. Классическая поддержка нескольких клавиатур обеспечивается платформой SCIM (Smart Common Input Method), которая доступна в репозиториях многих дистрибутивов вместе с готовыми настройками клавиатур, Сильная сторона SCIM это азиатские языки, такие как китайский, японский, корейский и тайский. Главный недостаток SCIM это сложный процесс настройки, который не всегда становится легче при использовании устаревшей еще несколько лет тому назад документации. Все же доступно руководство по использованию SCIM в последнем релизе Ubuntu.

Похожее решение представляет собой метод KMFL (Keyboard Mapping for Linux). Этот метод был рассмотрен несколько лет назад в одной из статей на сайте Linux.com. KMFL основывается на коде SCIM и имеет такую же сложную настройку. Но, с другой стороны, KMFL написан той же компанией, которая создала проприетарный Keyman для Windows. Поэтому для KMFL доступен больший набор раскладок. Это может оказаться полезным в том случае, если вам необходима поддержка какого–либо экзотического языка.

В любом случае, какими бы ни были описанные методы, сегодня поддержка расширенных символов наконец–то становится достаточно совершенной. Сейчас самое время для этого, ведь не за горами появление интернациональных web–адресов.

Брюс Байфилд (Bruce Byfield) – журналист, специализирующийся на компьютерной тематике. Регулярно пишет для Linux.com и IT Manager's Journal.


В обсуждении этой статьи на LOR приведено несколько ссылок на другие статьи, касающиеся ввода дополнительных символов