鼠标在显示器之间快速移动

why

mac多显示器的情况下,由于习惯用spotlight(alfred) 之类的软件切换应用,导致经常出现的情况下,我跳转(激活)到了另一个显示器上的一个应用,但是鼠标还停留在原显示器上,我想点一下,还得再移动下鼠标过来。多屏幕操作的时候的鼠标移动又挺浪费时间的。

How

在网上搜索后发现了一个很好用的方法,参考:How to quickly move mouse cursor between monitors 下面ipatch的回答。

方法如下

  1. 下载 hammerspoon
  2. 下载它的插件 spoon MouseFollowsFocus(如果觉得不适应的可以下载我的脚本,做了一些优化MyMouseFollowsFocus
  3. vim ~/.hammerspoon/init.lua
1
2
3
mouse_follows_focus = hs.loadSpoon("MouseFollowsFocus")
mouse_follows_focus:configure({})
mouse_follows_focus:start()

优化

默认的脚本存在一些对我使用体验较差的问题,所以我做了一些优化

不想看原理的可以直接下载我的脚本即可:MyMouseFollowsFocus
如果需要定制化,可以在修改脚本后,重新加载就可以了。脚本默认加载后的位置在~/.hammerspoon/Spoons/MouseFollowsFocus.spoon/init.lua

  1. xnip截图软件会自动激活所有桌面,导致鼠标重复跳转。

解决方法:直接禁用掉xnip

1
2
3
4
5
if hs.application.frontmostApplication():name() ~= "Xnip Helper" then
self:updateMouse(window)
else
print("xnip app running")
end
  1. 同个显示器下鼠标也自动跳转了。这个很困扰我,因为同个显示器下移动有点错愕感,而且也没什么必要。因为距离很小了

    解决方法:不同显示器下才跳转。判断的位置由应用变成显示器。