30.16 鼠标位置

函数 mouse-positionset-mouse-position 用于获取与设置鼠标当前位置。

Function: mouse-position

该函数返回鼠标位置的描述信息。返回值格式为 (frame x . y),其中 xy 为整数,表示相对于 frame 原生位置 (see 框架几何属性)、以 frame 默认字符大小为单位的(可能经过取整的)坐标 (see 框架字体)。

Variable: mouse-position-function

若不为 nil,该变量的值为 mouse-position 将要调用的函数。mouse-position 在返回前会调用该函数,并将自身原本的返回值作为唯一参数传入,然后返回该函数的返回值。

该异常钩子用于支持类似 xt-mouse.el 这样需要在 Lisp 层处理鼠标的包。

Variable: tty-menu-calls-mouse-position-function

若不为 nil,TTY 菜单将按照上述方式调用 mouse-position-function。该选项用于处理 mouse-position-function 不适合被 TTY 菜单调用的场景,例如可能触发重绘时。

Function: set-mouse-position frame x y

该函数将鼠标 跳转(warps the mouse) 到框架 frame 中的坐标 x, y 处。参数 xy 为整数,表示相对于 frame 原生位置 (see 框架几何属性)、以 frame 默认字符大小为单位的坐标 (see 框架字体)。

最终鼠标位置会被限制在 frame 的原生框架内。若 frame 不可见,该函数不执行任何操作。返回值无实际意义。

Function: mouse-pixel-position

该函数与 mouse-position 类似,区别在于它返回的坐标单位为像素而非字符。

Function: set-mouse-pixel-position frame x y

该函数与 set-mouse-position 一样可跳转鼠标位置,区别在于 xy 的单位为像素而非字符。

最终鼠标位置 会被限制在 frame 的原生框架内。若 frame 不可见,该函数不执行任何操作。返回值无实际意义。

在图形终端上,以下两个函数可获取与设置鼠标指针的绝对位置。

Function: mouse-absolute-pixel-position

该函数返回一个 cons 单元格 (x . y),表示鼠标指针相对于选中框架所在显示区域左上角 (0, 0) 的像素坐标。

Function: set-mouse-absolute-pixel-position x y

该函数将鼠标指针移动到坐标 (x, y)。坐标 xy 以像素为单位,相对于选中框架所在显示区域的左上角 (0, 0)。

以下函数可判断鼠标指针当前在某个框架上是否可见:

Function: frame-pointer-visible-p &optional frame

该谓词函数在 frame 上显示的鼠标指针可见时返回非 nil,否则返回 nilframe 省略或为 nil 时表示选中框架。当 make-pointer-invisible 设为 t 时该函数很有用,可以让你知道指针是否已被隐藏。 See Mouse Avoidance in The Emacs Manual.