[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Методы ввода - Обзор

Для того чтобы приложение могло работать в международной среде, основу которой составляет поддержка национальных языков (NLS), необходимы методы ввода. Метод ввода - это прикладной программный интерфейс (API), позволяющий создавать приложения, не зависящие от конкретного языка, клавиатуры или набора символов. Любой тип метода ввода характеризуется следующими свойствами:

Раскладки клавиатуры Набор раскладок клавиатуры метода ввода (imkeymaps), который работает с методом ввода и определяет поддерживаемые локали.
Символы клавиш Набор символов клавиш, которые может обрабатывать метод ввода.
Модификаторы Набор модификаторов (или состояний), каждый из которых имеет маску, которые поддерживаются методом ввода.

Дополнительная информация приведена в следующих разделах:

Методы ввода - Введение

Метод ввода - это набор функций, преобразующих сигнал, поступающий при нажатии клавиши на клавиатуре, в строку символов кодового набора, определенного в данной локали. Функции метода ввода выполняют обработку данных ввода, вид которых зависит от данной локали, с учетом состояний управляющих клавиш (Ctrl, Alt, Shift, Lock и Alt-Graphic). Метод ввода допускает различные варианты ввода данных, однако здесь рассматривается только ввод с клавиатуры.

Какой метод ввода загружается, как он работает и какие устройства при этом используются, определяется локалью. Затем метод ввода определяет возможные состояния и результат.

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

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

В некоторых языках применяется идеографическое письмо, в котором для обозначения понятия (слова) используется специальный письменный знак, а не набор букв. Например, наборы символов, используемые в Китае, Японии, Корее и на Тайване, содержат более 5000 знаков. Следовательно, для представления каждого такого символа необходимо более одного байта. Кроме того, невозможно создать клавиатуру, содержащую все идеографические символы. Необходимо использовать метод ввода, который позволяет создавать многобайтовые символы.

Методы ввода, установленные в вашей системе, хранятся в каталоге /usr/lib/nls/loc. Вы можете просмотреть содержимое этого каталога и определить, какие методы ввода доступны. Имена файлов методов ввода задаются в формате Язык_Территория.im. Например, fr_BE.im - это файл метода ввода символов французского языка, на котором говорят в Бельгии.

Посредством протокола с развитой структурой методы ввода позволяют приложениям поддерживать ввод без использования средств обработки данных ввода, зависящих от локали.

В AIX метод ввода задается в aixterm. При вводе символов через интерфейс AIXwindows они передаются серверу в виде кодов клавиш. Коды клавиш преобразуются в символы клавиш в соответствии с таблицей, хранящейся на компьютере-клиенте. Эта таблица задает соответствие между кодами клавиш и предопределенным набором кодов - символами клавиш. Каждому коду клавиши, генерируемому при ее нажатии, соответствует некоторый символ клавиши. Эти символы клавиш поддерживаются и назначаются MIT X Consortium. Символы клавиш передаются эмулятору терминала aixterm компьютера-клиента. В aixterm метод ввода преобразует входные символы клавиш в файловые коды и затем отправляет их в приложение. Для работы с адаптером дисплея предназначен X-сервер. X-сервер соединяется с X-клиентом через сокет. Следовательно, сервер и клиент могут взаимодействовать друг с другом, оставаясь в разных сетевых системах. Данные с клавиатуры поступают на X-сервер, а затем с сервера передаются эмулятору терминала. Эмулятор терминала передает данные в приложение. Когда данные от приложений передаются на дисплей, они проходят через эмулятор терминала, затем через сокеты - на сервер и от сервера - на дисплей.

Названия методов ввода

Набор доступных методов ввода определяется тем, какие локали установлены и какие методы ввода в них поддерживаются. Название метода ввода обычно согласовано с именем локали. Например, название метода ввода символов греческого языка (el_GR) совпадает с именем локали для греческого языка, на котором говорят в Греции.

Если для локали существует несколько методов ввода, то каждый дополнительный метод идентифицируется посредством модификатора, являющегося частью имени локали. Например, в локали для французского языка, на котором говорят в Канаде, существуют два метода ввода: по умолчанию и альтернативный, поддерживающий устаревшие типы клавиатур. Названия методов ввода следующие:

fr_CA Метод ввода по умолчанию
fr_CA@im=alt Альтернативный метод ввода
fr_CA.im__64 64-разрядный метод ввода

fr обозначает язык (французский), а CA - территорию (страну), в которой говорят на этом языке (Канада). Строка @im=alt - это модификатор локали, который обозначает альтернативный метод ввода. Модификаторы записываются в формате @im=Модификатор.

Поскольку метод ввода - это загружаемый объектный модуль, при работе в 64-разрядной среде требуется другой объект. В 64-разрядной среде при поиске метода ввода библиотека методов ввода автоматически добавляет строку __64 к имени метода ввода. В приведенном выше примере имя метода ввода должно быть fr_CA.im__64.

Присваивать названия методам ввода можно и не используя имена локалей. Поскольку библиотека libIM не накладывает ограничений на имена локалей, вызывающее приложение должно следить за тем, чтобы имя, переданное в libIM, существовало. Однако приложения должны запрашивать строки модификаторов только в виде @im=Модификатор и требовать, чтобы пользовательский запрос был объединен со строкой, возвращаемой функцией setlocale (LC_CTYPE,NULL).

Области методов ввода

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

Область состояния
Предназначена для просмотра текстовых данных и битовых образов. Область состояния - это расширение светодиодных индикаторов (LED) клавиатуры.

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

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

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

Функции управления областями метода ввода распределяются между приложением (или toolkit) и методом ввода. Функции распределяются следующим образом:

Связанная информация

Глава 16, Поддержка национальных языков .

Функции работы с локалями .


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]