函数 mouse-position 和 set-mouse-position 用于获取与设置鼠标当前位置。
该函数返回鼠标位置的描述信息。返回值格式为 (frame x . y),其中 x 和 y 为整数,表示相对于 frame 原生位置 (see 框架几何属性)、以 frame 默认字符大小为单位的(可能经过取整的)坐标 (see 框架字体)。
若不为 nil,该变量的值为 mouse-position 将要调用的函数。mouse-position 在返回前会调用该函数,并将自身原本的返回值作为唯一参数传入,然后返回该函数的返回值。
该异常钩子用于支持类似 xt-mouse.el 这样需要在 Lisp 层处理鼠标的包。
若不为 nil,TTY 菜单将按照上述方式调用 mouse-position-function。该选项用于处理 mouse-position-function 不适合被 TTY 菜单调用的场景,例如可能触发重绘时。
该函数将鼠标 跳转(warps the mouse) 到框架 frame 中的坐标 x, y 处。参数 x 和 y 为整数,表示相对于 frame 原生位置 (see 框架几何属性)、以 frame 默认字符大小为单位的坐标 (see 框架字体)。
最终鼠标位置会被限制在 frame 的原生框架内。若 frame 不可见,该函数不执行任何操作。返回值无实际意义。
该函数与 mouse-position 类似,区别在于它返回的坐标单位为像素而非字符。
该函数与 set-mouse-position 一样可跳转鼠标位置,区别在于 x 和 y 的单位为像素而非字符。
最终鼠标位置 不 会被限制在 frame 的原生框架内。若 frame 不可见,该函数不执行任何操作。返回值无实际意义。
在图形终端上,以下两个函数可获取与设置鼠标指针的绝对位置。
该函数返回一个 cons 单元格 (x . y),表示鼠标指针相对于选中框架所在显示区域左上角 (0, 0) 的像素坐标。
该函数将鼠标指针移动到坐标 (x, y)。坐标 x 和 y 以像素为单位,相对于选中框架所在显示区域的左上角 (0, 0)。
以下函数可判断鼠标指针当前在某个框架上是否可见:
该谓词函数在 frame 上显示的鼠标指针可见时返回非 nil,否则返回 nil。frame 省略或为 nil 时表示选中框架。当 make-pointer-invisible 设为 t 时该函数很有用,可以让你知道指针是否已被隐藏。
See Mouse Avoidance in The Emacs Manual.