0%

AutoHotkey配置鼠标光标在屏幕之间瞬移

双屏幕带来的问题

很多同事都会在笔记本电脑之外,再配备一个或两个屏幕,我也另外配备了一块屏幕。但是,使用双屏幕会带来两个问题:一个是窗口的切换移动不方便,另一个是鼠标的切换移动不方便。

《Windows快捷键》一文中,提到了两个可以用于多个屏幕窗口操作的快捷键:
1、alt+tab,切换窗口。
2、win+shift+左右键,可以移动窗口到另一个屏幕。

窗口的问题基本解决了,但是鼠标的问题还没有解决。怎么办?很多文章说,通过“显示设置”,调整两个屏幕的相对位置,就能更加容易地在两个屏幕间移动鼠标光标。但是,这个方法只是缓解了问题,并没有解决问题,鼠标光标移动依然很麻烦。

此时,就该本文的主角 AutoHotkey 出马了!

AutoHotkey

简介

AutoHotkey is a free, open-source scripting language for Windows that allows users to easily create small to complex scripts for all kinds of tasks such as: form fillers, auto-clicking, macros, etc.

正如官方的介绍,autohotkey是一个免费开源的脚本语言,可以帮助用户在Windows上轻松创建脚本,例如:表格填充,自动单击,宏等。

安装

1、访问AutoHotkey官网或者AutoHotkey-github,下载安装包,本文中选择下载 AutoHotkey_1.1.32.00_setup.exe

2、双击安装即可

基本语法

helloworld

1、新建文件helloworld.ahk,内容为:

1
2
3
!H::
Send, helloworld
Return

第一行定义快捷键,其中!代表alt,H就是H。
第二行Send命令,,后的是参数。
第三行Return停止后面的脚本。

2、启动脚本
双击helloworld.ahk,或者右键helloworld.ahk,Run Script。查看系统托盘,可以看到多了一个H的图标,这就是正在运行的脚本。

3、测试脚本
打开任意一个文档,按下 alt+H ,发现会自动填入 “helloworld”,nice。

语法说明

1、符号说明

1
2
3
4
5
#	Win
! Alt
^ Control
+ Shift
& 连接两个按键(含鼠标按键),合并成一个自定义热键

2、常用命令

1
2
3
4
5
6
Send 发送一段字符
SendInput 发送一段字符
MsgBox 弹出对话框
Run 运行一个软件或者打开网页
WinActivate 窗口激活
WinWaitActive 等待窗口激活

更多内容参考AutoHotkey官方文档

定义快捷键

利用autohotkey,可以实现自定义快捷键。

双脚本

1、新建文件 mousemove1.ahk,内容为

1
2
3
4
!1::
CoordMode, Mouse, Screen
MouseMove, (A_ScreenWidth // 2), (A_ScreenHeight // 2)
return

这段脚本运行后,按下 alt+1 ,鼠标光标会跳转到屏幕1的中心。

2、新建文件 mousemove2.ahk,内容为:

1
2
3
4
!2::
CoordMode, Mouse, Screen
MouseMove, (A_ScreenWidth + 100), 100
return

这段脚本运行后,按下 alt+2 ,鼠标光标会跳转到屏幕2的左上角的(100,100)位置。

这两个脚本配合,已经可以鼠标光标在两个屏幕间切换,nice。
但是,mousemove2.ahk 还有改进的空间。既然屏幕1是跳转到屏幕中间,那么屏幕2自然也是跳转到屏幕中间更好。

屏幕2的分辨率为3840x2160,因此脚本修改为:

1
2
3
4
!2::
CoordMode, Mouse, Screen
MouseMove, (A_ScreenWidth + 1920), 1080
return

单脚本

以上,已经实现了鼠标光标在两个屏幕间的完美切换。但是,因为切换时有两个快捷键,所以切换鼠标所在屏幕时,还要想一下是切到1还是切到2,这也是一个可以改进的点。

创建文件 mousemove.ahk,内容为:

1
2
3
4
5
6
7
8
9
10
!J::
CoordMode, Mouse, Screen
MouseGetPos, xpos, ypos
if (xpos <= A_ScreenWidth) and (ypos <= A_ScreenHeight)
{
MouseMove, (A_ScreenWidth // 2), (A_ScreenHeight // 2)
}else {
MouseMove, (A_ScreenWidth + 1920), 1080
}
return

这段脚本运行后,按下 alt+J ,可以实现鼠标光标切换到另一个屏幕的中心。