Меню и мышь
Обычный способ заставить карту клавиш меню отобразить меню — сделать ее определением клавиши-префикса. (Программа Lisp может явно вывести меню и получить выбор пользователя — см. Появившиеся меню.)
Если клавиша-префикс заканчивается событием мыши, Emacs обрабатывает карту клавиш меню, выводя видимое меню, чтобы пользователь мог выбрать пункт с помощью мыши. Когда пользователь щелкает по элементу меню, генерируемое событие — это символ или символ, которому присвоено связывание, вызвавшее этот пункт меню. (Элемент меню может сгенерировать серию событий, если меню имеет несколько уровней или получено из панели меню.)
Чаще всего лучше использовать событие нажатия кнопки для запуска меню. Тогда пользователь может выбрать пункт меню, отпустив кнопку.
Если карта клавиш меню содержит связывание с вложенной картой клавиш, вложенная карта клавиш определяет подменю. Будет элемент меню, помеченный строкой элемента вложенной карты клавиш, и щелчок по этому элементу автоматически выводит указанное подменю. Как исключение, если карта клавиш меню содержит единственную вложенную карту клавиш и нет других элементов меню, меню отображает содержимое вложенной карты клавиш непосредственно, а не как подменю.
Однако, если Emacs скомпилирован без поддержки X-интерфейса или на текстовых терминалах, подменю не поддерживаются. Каждая вложенная карта клавиш отображается как элемент меню, но щелчок по ней не вызывает автоматического вывода подменю. Если вы хотите имитировать эффект подменю, вы можете сделать это, присвоив вложенной карте клавиш строку элемента, которая начинается с ‘@’. Это заставит Emacs отобразить вложенную карту клавиш с помощью отдельного панели меню; остальная часть строки элемента после ‘@’ — это метка панели. Если Emacs скомпилирован без поддержки X-интерфейса или если меню отображается на текстовом терминале, панели меню не используются; в этом случае ‘@’ в начале строки элемента опускается при отображении метки меню и не имеет никакого другого эффекта.
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/Mouse-Menus.html