События щелчка
Когда пользователь нажимает и отпускает кнопку мыши в одном и том же месте, это генерирует событие щелчка. В зависимости от того, как ваша система окон сообщает о событиях прокрутки колесика мыши, вращение колесика может генерировать щелчок мыши или событие прокрутки колесика. Все события мыши имеют одинаковый формат:
(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-edgetop-edgeright-edgebottom-edge-
Щелчок был произведён на соответствующей границе с отступом не менее одного канонического символа от ближайшего угла границы.
top-left-cornertop-right-cornerbottom-right-cornerbottom-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