Функции чтения событий вызывают текущий метод ввода, если таковой имеется
(см. Методы ввода). Если значение
input-method-function не равно nil, то оно должно
быть функцией; когда read-event считывает печатаемый символ
(включая SPC) без битов модификатора, он вызывает эту
функцию, передавая символ в качестве аргумента.
Если это не nil, его значение указывает на текущую
функцию метода ввода.
Предупреждение: не привязывайте эту
переменную с помощью let. Она часто локальна для буфера, и
если вы привяжете ее вокруг чтения ввода (что и произойдет, когда вы
будете привязывать ее), переключение буферов асинхронно, пока
Emacs ожидает, приведет к восстановлению значения в неправильном буфере.
Функция метода ввода должна вернуть список событий, которые должны использоваться
в качестве ввода. (Если список равен nil, это означает, что
ввода нет, поэтому read-event ожидает другого события.) Эти
события обрабатываются до событий в unread-command-events
(см. Мелкие функции ввода событий).
События, возвращенные функцией метода ввода, не передаются снова в функцию
метода ввода, даже если они являются печатаемыми символами без битов
модификатора.
Если функция метода ввода вызывает read-event или
read-key-sequence, она должна сначала привязать
input-method-function к nil, чтобы предотвратить
рекурсию.
Функция метода ввода не вызывается при чтении второго и последующих
событий последовательности клавиш. Таким образом, эти символы не подлежат
обработке методом ввода. Функция метода ввода должна проверять значения
overriding-local-map и overriding-terminal-local-map;
если одна из этих переменных не равна nil, метод ввода должен
поместить свой аргумент в список и вернуть этот список без дальнейшей
обработки.