30.16 Позиция мыши

Функции mouse-position и set-mouse-position предоставляют доступ к текущей позиции мыши.

Функция: mouse-position

Эта функция возвращает описание позиции мыши. Значение выглядит как (frame x . y), где x и y — целые числа, дающие (возможно, округленную) позицию в кратных размеру символа по умолчанию для frame (см. Шрифт фрейма) относительно нативной позиции frame (см. Геометрия фрейма).

Переменная: mouse-position-function

Если не nil, значение этой переменной — это функция, которую mouse-position вызывает. mouse-position вызывает эту функцию непосредственно перед возвратом, передавая ей свое нормальное значение в качестве единственного аргумента, и возвращает то, что возвращает эта функция.

Этот аномальный хук существует для таких пакетов, как xt-mouse.el, которым необходимо выполнять обработку мыши на уровне Lisp.

Переменная: tty-menu-calls-mouse-position-function

Если не nil, меню TTY вызовут mouse-position-function, как описано выше. Это существует для случаев, когда mouse-position-function небезопасно вызывать из меню TTY, например, если это может вызвать повторный дисплей.

Функция: set-mouse-position frame x y

Эта функция перемещает мышь в позицию x, y в фрейме frame. Аргументы x и y — целые числа, дающие позицию в кратных размеру символа по умолчанию для frame (см. Шрифт фрейма) относительно нативной позиции frame (см. Геометрия фрейма).

Полученная позиция мыши ограничена нативным фреймом frame. Если frame не виден, эта функция ничего не делает. Возвращаемое значение не имеет значения.

Функция: mouse-pixel-position

Эта функция похожа на mouse-position, за исключением того, что она возвращает координаты в единицах пикселей, а не в единицах символов.

Функция: set-mouse-pixel-position frame x y

Эта функция перемещает мышь, как set-mouse-position, за исключением того, что x и y заданы в единицах пикселей, а не в единицах символов.

Полученная позиция мыши не ограничена нативным фреймом frame. Если frame не виден, эта функция ничего не делает. Возвращаемое значение не имеет значения.

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

Функция: mouse-absolute-pixel-position

Эта функция возвращает ячейку cons (x . y) с координатами позиции курсора мыши в пикселях относительно позиции (0, 0) отображения выбранного фрейма.

Функция: set-mouse-absolute-pixel-position x y

Эта функция перемещает курсор мыши в позицию (x, y). Координаты x и y интерпретируются в пикселях относительно позиции (0, 0) отображения выбранного фрейма.

Следующая функция может указать, виден ли курсор мыши в данный момент на фрейме:

Функция: frame-pointer-visible-p &optional frame

Эта предикатная функция возвращает не nil, если указатель мыши, отображаемый на frame, виден; в противном случае возвращает nil. frame опущен или равен nil означает выбранный фрейм. Это полезно, когда make-pointer-invisible установлен в t: это позволяет узнать, был ли указатель скрыт. См. Избегание мыши в Руководство Emacs.