Доступ к событиям мыши
Этот раздел описывает удобные функции для доступа к данным в событии нажатия или перемещения кнопки мыши. Данные событий клавиатуры можно получить с помощью тех же функций, но элементы данных, которые неприменимы к событиям клавиатуры, равны нулю или nil.
Следующие две функции возвращают список позиций мыши (см. События щелчка), определяющий позицию события мыши.
- Функция: event-start event
-
Возвращает начальную позицию event.
Если event — это событие щелчка или нажатия кнопки, возвращается расположение события. Если event — это событие перетаскивания, возвращается начальная позиция перетаскивания.
- Функция: event-end event
-
Возвращает конечную позицию event.
Если event — это событие перетаскивания, возвращается позиция, где пользователь отпустил кнопку мыши. Если event — это событие щелчка или нажатия кнопки, значение фактически является начальной позицией, которая является единственной позицией таких событий.
- Функция: posnp object
Эта функция возвращает не-
nilесли object — это список позиций мыши в формате, документированном в События щелчка), иnilв противном случае.
Эти функции принимают список позиций мыши в качестве аргумента и возвращают различные его части:
- Функция: posn-window position
Возвращает окно, в котором находится position. Если position представляет расположение за пределами области, где произошло событие, возвращается эта область вместо этого.
- Функция: posn-area position
Возвращает область окна, записанную в position. Возвращает
nil, когда событие произошло в текстовой области окна; в противном случае возвращается символ, идентифицирующий область, в которой произошло событие.
- Функция: posn-point position
Возвращает позицию буфера в position. Когда событие произошло в текстовой области окна, в приграничной области или на кромке, это целое число, определяющее позицию буфера. В противном случае значение не определено.
- Функция: posn-x-y position
-
Возвращает координаты x и y в пикселях в position в виде консового списка
(x . y). Эти координаты относительны к окну, заданномуposn-window.Этот пример показывает, как преобразовать координаты, относительные к окну, в области текста окна в координаты, относительные к области:
(defun frame-relative-coordinates (position) "Return frame-relative coordinates from POSITION. POSITION is assumed to lie in a window text area." (let* ((x-y (posn-x-y position)) (window (posn-window position)) (edges (window-inside-pixel-edges window))) (cons (+ (car x-y) (car edges)) (+ (cdr x-y) (cadr edges)))))
- Функция: posn-col-row position
-
Эта функция возвращает консовый список
(col . row), содержащий приблизительные значения столбца и строки, соответствующие позиции буфера, описанной position. Возвращаемое значение дается в единицах стандартной ширины символа и стандартной высоты строки (включая интервалы) области, вычисленных из значений x и y, соответствующих position. (Таким образом, если фактические символы имеют размеры, отличные от стандартных, фактическая строка и столбец могут отличаться от этих вычисленных значений.)Обратите внимание, что row считается сверху области текста. Если окно, заданное position, содержит строку заголовка (см. Строки заголовков) или строку вкладки, они не включаются в подсчет row.
- Функция: posn-actual-col-row position
-
Возвращает фактические значения строки и столбца в position как консовый список
(col . row). Значения являются фактическими номерами строки и столбца в окне, заданном position. Подробности см. в События щелчка. Функция возвращаетnil, если position не содержит фактических значений позиции; в этом случае можно использоватьposn-col-row, чтобы получить приблизительные значения.Обратите внимание, что эта функция не учитывает визуальную ширину символов на экране, например, количество визуальных столбцов, занимаемых символом табуляции или изображением. Если вам нужны координаты в канонических единицах символов, используйте
posn-col-rowвместо этого.
- Функция: posn-string position
Возвращает строковый объект, описанный position, либо
nil(что означает, что position описывает текстовый буфер), или консовый список(string . string-pos).
- Функция: posn-image position
Возвращает объект изображения в position, либо
nil(если в position нет изображения), или описание изображения(image …).
- Функция: posn-object position
Возвращает объект изображения или строки, описанный position, либо
nil(что означает, что position описывает текстовый буфер), изображение(image …), или консовый список(string . string-pos).
- Функция: posn-object-x-y position
Возвращает координаты x и y в пикселях, относительные к левому верхнему углу объекта, описанного position, в виде консового списка
(dx . dy). Если position описывает текстовый буфер, возвращает относительные координаты символа текстового буфера, наиболее близкого к этой позиции.
- Функция: posn-object-width-height position
Возвращает ширину и высоту объекта в пикселях, описанного position, в виде консового списка
(width . height). Если position описывает позицию буфера, возвращает размер символа в этой позиции.
- Функция: posn-timestamp position
Возвращает метку времени в position. Это время, когда произошло событие, в миллисекундах.
Эти функции вычисляют список позиций, заданных конкретной позицией буфера или экрана. Вы можете получить доступ к данным в этом списке позиций с помощью описанных выше функций.
- Функция: posn-at-point &optional pos window
-
Эта функция возвращает список позиций для позиции pos в window. pos по умолчанию устанавливается в точку в window; window по умолчанию устанавливается в выбранное окно.
posn-at-pointвозвращаетnil, если pos не отображается в window.
- Функция: posn-at-x-y x y &optional frame-or-window whole
Эта функция возвращает информацию о позиции, соответствующую координатам пикселей x и y в заданной области или окне frame-or-window, которая по умолчанию устанавливается в выбранное окно. Координаты x и y относительны к области текста выбранного окна. Если whole —
non-nil, координата 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/Accessing-Mouse.html