Spec-Zone.ru › Elisp

Доступ к событиям мыши

Этот раздел описывает удобные функции для доступа к данным в событии нажатия или перемещения кнопки мыши. Данные событий клавиатуры можно получить с помощью тех же функций, но элементы данных, которые неприменимы к событиям клавиатуры, равны нулю или 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

Spec-Zone.ru

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