Spec-Zone.ru › Elisp

События повторения

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

Наиболее распространенными событиями повторения являются события двойного щелчка. Emacs генерирует событие двойного щелчка, когда вы дважды щелкаете по кнопке; событие происходит при отпускании кнопки (как обычно для всех событий щелчка).

Тип события двойного щелчка содержит префикс «double-». Таким образом, двойной щелчок по второй кнопке мыши с зажатой клавишей meta поступает в программу Lisp как M-double-mouse-2. Если для события двойного щелчка нет привязки, используется привязка соответствующего обычного события щелчка для его выполнения. Таким образом, вам не нужно обращать внимание на функцию двойного щелчка, если вы этого не хотите.

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

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

Если вы щелкаете по кнопке, затем снова нажимаете ее и начинаете перемещать мышь с зажатой кнопкой, то при отпускании кнопки вы получите событие двойного перетаскивания. Его тип события содержит «double-drag» вместо «drag». Если для события двойного перетаскивания нет привязки, Emacs ищет альтернативную привязку, как если бы событие было обычным событием перетаскивания.

Перед событием двойного щелчка или двойного перетаскивания Emacs генерирует событие двойного нажатия, когда пользователь во второй раз нажимает кнопку. Его тип события содержит «double-down» вместо «down». Если для события двойного нажатия нет привязки, Emacs ищет альтернативную привязку, как если бы событие было обычным событием нажатия кнопки. Если и таким образом привязка не найдена, событие двойного нажатия игнорируется.

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

Если вы дважды щелкаете по кнопке, а затем снова нажимаете ее, все это быстро, Emacs генерирует событие тройного нажатия, за которым следует либо событие тройного щелчка, либо событие тройного перетаскивания. Типы событий этих событий содержат «triple» вместо «double». Если для любого события тройного нажатия нет привязки, Emacs использует привязку, которую он бы использовал для соответствующего события двойного нажатия.

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

Функция: event-click-count event

Эта функция возвращает количество последовательных нажатий кнопки, которые привели к событию event. Если event — событие двойного нажатия, двойного щелчка или двойного перетаскивания, значение равно 2. Если event — событие тройного нажатия, значение равно 3 или больше. Если event — обычное событие мыши (не событие повторения), значение равно 1.

Параметр пользователя: double-click-fuzz

Для генерации событий повторения последовательные нажатия кнопки мыши должны быть примерно в одной и той же позиции на экране. Значение double-click-fuzz задаёт максимальное количество пикселей, которое может быть перемещена мышь (горизонтально или вертикально) между двумя последовательными щелчками, чтобы образовать двойной щелчок.

Эта переменная также является порогом для движения мыши, чтобы считать ее перетаскиванием.

Параметр пользователя: double-click-time

Для генерации событий повторения количество миллисекунд между последовательными нажатиями кнопки мыши должно быть меньше значения double-click-time. Установка double-click-time в значение nil полностью отключает обнаружение многократных щелчков. Установка в значение t удаляет ограничение по времени; 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/Repeat-Events.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API