Отслеживание мыши
Иногда полезно отслеживать мышь, что означает отображать что-то, указывающее на положение мыши, и перемещать указатель по мере движения мыши. Для эффективного отслеживания мыши вам нужен способ дождаться, пока мышь фактически сдвинется.
Удобный способ отслеживания мыши — запросить события для отображения движения мыши. Затем вы можете дождаться движения, дождавшись события. Кроме того, вы можете легко обработать любые другие типы событий, которые могут возникнуть. Это полезно, потому что обычно вы не хотите отслеживать мышь вечно — только до тех пор, пока не произойдет другое событие, такое как отпускание кнопки.
- Макрос: track-mouse body…
-
Этот макрос выполняет body, при этом включено генерирование событий движения мыши. Обычно body использует
read-eventдля чтения событий движения и соответствующего изменения отображения. См. События движения для формата событий движения мыши.Значение
track-mouseсоответствует последней форме в body. Вы должны спроектировать body так, чтобы он завершался, когда видит событие отпускания кнопки, или любой другой тип события, означающий, что пора остановить отслеживание.Форма
track-mouseзаставляет Emacs генерировать события движения мыши, связывая переменнуюtrack-mouseс не-nilзначением. Если эта переменная имеет специальное значениеdragging, она дополнительно указывает движку отображения воздержаться от изменения формы указателя мыши. Это желательно в программах Lisp, которым требуется перетаскивание мыши по большим частям отображения Emacs, что в противном случае может привести к изменению формы указателя мыши в зависимости от части отображения, на которую он наводится (см. Форма указателя). Поэтому программы Lisp, которым нужен указатель мыши, сохраняющий свою исходную форму во время перетаскивания, должны связатьtrack-mouseсо значениемdraggingв начале своего body.
Обычная цель отслеживания движения мыши — указывать на экране последствия нажатия или отпускания кнопки в текущем положении.
Во многих случаях вы можете избежать необходимости отслеживать мышь, используя свойство текста mouse-face (см. Специальные свойства). Это работает на гораздо более низком уровне и выполняется более плавно, чем отслеживание мыши на уровне Lisp.
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-Tracking.html