События фокуса
Системы окон предоставляют общие способы для пользователя контролировать, какое окно получает ввод с клавиатуры. Этот выбор окна называется фокусом. Когда пользователь выполняет действие для переключения между кадрами Emacs, это генерирует событие фокуса. Нормальное определение события фокуса в глобальной раскладке — это выбор нового кадра в Emacs, как ожидает пользователь. См. Фокус ввода, в котором также описаны хуки, связанные с событиями фокуса.
События фокуса представляются в Lisp как списки, которые выглядят так:
(switch-frame new-frame)
где new-frame — это кадр, на который переключено внимание.
Некоторые менеджеры окон X настроены таким образом, что просто перемещение мыши в окно достаточно для установки фокуса в нём. Обычно нет необходимости для программы Lisp знать о изменении фокуса, пока не придёт какой-либо другой вид ввода. Emacs генерирует событие фокуса только тогда, когда пользователь фактически нажимает клавишу на клавиатуре или кнопку мыши в новом кадре; простое перемещение мыши между кадрами не генерирует событие фокуса.
Событие фокуса в середине последовательности нажатий клавиш могло бы исказить последовательность. Поэтому Emacs никогда не генерирует событие фокуса в середине последовательности нажатий клавиш. Если пользователь меняет фокус в середине последовательности нажатий клавиш — то есть, после префиксной клавиши — то Emacs переупорядочивает события таким образом, что событие фокуса приходит либо до, либо после многособытийной последовательности нажатий клавиш, а не внутри неё.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Focus-Events.html