34.11 Методы ввода

Методы ввода предоставляют удобные способы ввода не-ASCII символов с клавиатуры. В отличие от кодировочных систем, которые преобразуют не-ASCII символы в кодировки, предназначенные для чтения программами, методы ввода предоставляют удобные для человека команды. (См. Методы ввода в Руководство GNU Emacs, для получения информации о том, как пользователи используют методы ввода для ввода текста.) О том, как определять методы ввода, еще не документировано в этом руководстве, но здесь мы описываем, как их использовать.

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

Переменная: current-input-method

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

Пользовательский вариант: default-input-method

Эта переменная хранит метод ввода по умолчанию для команд, которые выбирают метод ввода. В отличие от current-input-method, эта переменная обычно глобальна.

Команда: set-input-method input-method

Эта команда активирует метод ввода input-method для текущего буфера. Она также устанавливает default-input-method в input-method. Если input-method равно nil, эта команда деактивирует любой метод ввода для текущего буфера.

Функция: read-input-method-name prompt &optional default inhibit-null

Эта функция считывает имя метода ввода в минибуфере, запрашивая prompt. Если default не равно nil, то он возвращается по умолчанию, если пользователь вводит пустой ввод. Однако, если inhibit-null не равно nil, пустой ввод сигнализирует об ошибке.

Возвращаемое значение — это строка.

Переменная: input-method-alist

Эта переменная определяет все поддерживаемые методы ввода. Каждый элемент определяет один метод ввода и должен иметь следующий вид:

(input-method language-env activate-func
 title description args...)

Здесь input-method — это имя метода ввода, строка; language-env — это другая строка, имя языковой среды, для которой рекомендуется этот метод ввода. (Это служит только для целей документации.)

activate-func — это функция, вызываемая для активации этого метода. args, если они есть, передаются в качестве аргументов в activate-func. В общем, аргументы для activate-func это input-method и args.

title — это строка, отображаемая в строке состояния, пока этот метод активен. description — это строка, описывающая этот метод и для чего он подходит.

Основной интерфейс для методов ввода предоставляется через переменную input-method-function. См. Чтение одного события и Вызов метода ввода.