最近研究了下AutoHotKey这个小玩具,跟高中时代玩过的AutoIt很像,不过这边更侧重于全局热键的实现。
前几天也把多年不用的C#重新用了下,四处抄抄代码做了个跟按键精灵类似的东西,突然想到AutoIt这个老物,于是又搜索了下又没有什么更好地方案,毕竟AutoIt印象里体积比较大,而且闭源。
具体对比可以参考 https://ui.vision/blog/ahk-vs-autoit/
工具介绍
这个工具的功能是每按一次热键将鼠标位置保存,并切换到原来位置。
主要用途是简化多屏幕/多窗口远距离频繁移动。
比如debug时有两个窗口,一边是代码,另一边是调试中的程序,在两个屏幕反复移动比较累(懒癌晚期),所以可以用一个快捷键快速切换位置。
源码
更新: https://gist.github.com/feilongfl/8bb1799565ad74495f4140591d686cbd#file-mouseswitch-ahk
#SingleInstance force
; global val define
global mouseSwitch = -1
; set pixel pos base on screen
CoordMode, Mouse, Screen
CoordMode, ToolTip, Screen
; work func
cahngeMouseStatus()
{
static xpos = 0
static ypos = 0
; intial script varbal
if(mouseSwitch = -1) {
; save omuse pos
MouseGetPos, xpos, ypos
ToolTip, %msg% , %xpos%, %ypos%
; initial mouse index
mouseSwitch = false
}
mouseSwitch := mouseSwitch = true ? false : true
; get mouse pos
MouseGetPos, xpos_t, ypos_t
; pop old pos
MouseMove, %xpos%, %ypos%
; push origin pos
xpos = %xpos_t%
ypos = %ypos_t%
; showTips
msg = %mouseSwitch%: %xpos% %ypos%
ToolTip, %msg% , %xpos%, %ypos%
}
; reg hotkey
; trig
CapsLock:: cahngeMouseStatus()
; clear
^CapsLock::
ToolTip
mouseSwitch = -1
return
; capslock
+CapsLock::
SetCapsLockState % !GetKeyState("CapsLock", "T")
return