Spec-Zone.ru › Elisp

События щелчка

Когда пользователь нажимает и отпускает кнопку мыши в одном и том же месте, это генерирует событие щелчка. В зависимости от того, как ваша система окон сообщает о событиях прокрутки колесика мыши, вращение колесика может генерировать щелчок мыши или событие прокрутки колесика. Все события мыши имеют одинаковый формат:

(event-type position click-count)
event-type

Это символ, указывающий, какая кнопка мыши была использована. Это один из символов mouse-1, mouse-2, …, где кнопки пронумерованы слева направо. Для события прокрутки колесика это может быть wheel-up или wheel-down.

Вы также можете использовать префиксы ‘A-’, ‘C-’, ‘H-’, ‘M-’, ‘S-’ и ‘s-’ для модификаторов alt, control, hyper, meta, shift и super, как и с функциональными клавишами.

Этот символ также служит типом события. Настройки горячих клавиш описывают события по их типам; таким образом, если есть настройка горячей клавиши для mouse-1, эта настройка будет применяться ко всем событиям, у которых event-type равен mouse-1.

position

Это список координат мыши, указывающий, где произошло событие мыши; подробности см. ниже.

click-count

Это количество быстрых повторных нажатий той же кнопки мыши или количество повторных вращений колесика. См. Повторные события.

Для доступа к содержимому списка координат мыши в слоте position события мыши обычно следует использовать функции, описанные в Доступ к мыши.

Явный формат списка зависит от места возникновения события. Для щелчков в области текста, строке режима, строке заголовка, строке вкладок или во фрингах или полях список координат мыши имеет вид

(window pos-or-area (x . y) timestamp
 object text-pos (col . row)
 image (dx . dy) (width . height))

Значения этих элементов списка следующие:

window

Окно, в котором произошло событие мыши.

pos-or-area

Позиция буфера символа, на который был нажат щелчок в области текста; или, если событие произошло за пределами области текста, область окна, где оно произошло. Это один из символов mode-line, header-line, tab-line, vertical-line, left-margin, right-margin, left-fringe, или right-fringe.

В одном особом случае pos-or-area — это список, содержащий символ (один из перечисленных выше символов), а не только сам символ. Это происходит после регистрации ввода Emacs виртуальных префиксных клавиш для события. См. Ввод последовательностей клавиш.

x, y

Относительные пиксельные координаты события. Для событий в области текста окна начало координат (0 . 0) принимается за верхний левый угол области текста. См. Размеры окон. Для событий в строке режима, строке заголовка или строке вкладок начало координат — это верхний левый угол самого окна. Для фрингов, полей и вертикальной границы x не имеет значимых данных. Для фрингов и полей y относится к нижнему краю строки заголовка. Во всех случаях координаты x и y увеличиваются соответственно вправо и вниз.

timestamp

Время наступления события в виде целого числа миллисекунд с момента системно-зависимого начального времени.

object

Либо nil, что означает, что событие произошло на тексте буфера, либо консольный элемент вида (string . string-pos), если в позиции события есть строка из свойства текста или наложения.

string

Строка, на которую был нажат щелчок, включая любые свойства.

string-pos

Позиция в строке, где произошел щелчок.

text-pos

Для щелчков в области поля или фринга это позиция буфера первого видимого символа в соответствующей строке в окне. Для щелчков в строке режима, строке заголовка или строке вкладок это nil. Для других событий это позиция буфера, наиболее близкая к щелчку.

col, row

Это фактические номера координат столбца и строки глифа под позицией x, y. Если x выходит за пределы последнего столбца фактического текста в своей строке, col сообщается путем добавления вымышленных дополнительных столбцов, имеющих стандартную ширину символа. Строка 0 принимается как строка заголовка, если в окне есть строка заголовка, или строка 1, если в окне также есть строка вкладок, или самая верхняя строка области текста в противном случае. Столбец 0 принимается как самый левый столбец области текста для щелчков в текстовой области окна или самый левый столбец строки режима или строки заголовка для щелчков в них. Для щелчков во фрингах или вертикальных границах эти данные не имеют смысла. Для щелчков в полях col измеряется от левого края области поля, а row — от верхней части области поля.

image

Если в месте щелчка есть изображение, это объект изображения, возвращаемый find-image (см. Определение изображений); в противном случае это nil.

dx, dy

Это пиксельные координаты щелчка, относящиеся к верхнему левому углу object, что составляет (0 . 0). Если object — nil, что означает буфер, координаты относятся к верхнему левому углу нажатого глифа символа.

width, height

Если щелчок по символу, либо из текстового буфера, либо из наложения или строки отображения, это пиксельная ширина и высота глифа этого символа; в противном случае это размеры object на который был нажат щелчок.

Для щелчков по полосе прокрутки position имеет следующий вид:

(window area (portion . whole) timestamp part)
window

Окно, на полосе прокрутки которого был нажат щелчок.

area

Это символ vertical-scroll-bar.

portion

Количество пикселей от верхней части полосы прокрутки до позиции щелчка. В некоторых наборах инструментов, включая GTK+, Emacs не может извлечь эти данные, поэтому значение всегда равно 0.

whole

Общая длина полосы прокрутки в пикселях. В некоторых наборах инструментов, включая GTK+, Emacs не может извлечь эти данные, поэтому значение всегда равно 0.

timestamp

Время наступления события в миллисекундах. В некоторых наборах инструментов, включая GTK+, Emacs не может извлечь эти данные, поэтому значение всегда равно 0.

part

Часть полосы прокрутки, на которую был нажат щелчок. Это один из символов handle (ручка полосы прокрутки), above-handle (область над ручкой), below-handle (область под ручкой), up (стрелка вверх в одном конце полосы прокрутки) или down (стрелка вниз в одном конце полосы прокрутки).

Для щелчков по внутренней границе рамки (см. Макет рамки), панели инструментов рамки (см. Панель инструментов) или панели вкладок форма position имеет вид:

 (frame part (X . Y) timestamp)
frame

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

part

Часть рамки, по которой был нажат щелчок. Это может быть одно из следующих:

tool-bar

Рамка имеет панель инструментов, и событие произошло в области панели инструментов.

tab-bar

Рамка имеет панель вкладок, и событие произошло в области панели вкладок.

left-edge
top-edge
right-edge
bottom-edge

Щелчок был произведён на соответствующей границе с отступом не менее одного канонического символа от ближайшего угла границы.

top-left-corner
top-right-corner
bottom-right-corner
bottom-left-corner

Щелчок был произведён на соответствующем углу внутренней границы.

nil

У рамки нет внутренней границы, и событие не произошло на панели вкладок или панели инструментов. Это обычно происходит в текстовых рамках. Это также может произойти в рамках GUI с внутренней границей, если параметр drag-internal-border рамки (см. Параметры перетаскивания мышью) не имеет значения, отличного от nil.

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/Click-Events.html

Spec-Zone.ru

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