AutoHotkey的应用及与鼠标的配合

我买了罗技G300鼠标,它除了左右键,左右侧还各有两个键,中间又有两个键,共八个键。其中一个键可以用来切换鼠标模式,共有三种鼠标模式,每种模式里按键的功能可以不同,所以如果左右键和切换模式键不变的话,最多有3+(8-3)*3=18个键或功能。

G300是可编程的,不然这18个键位也用不了这么多。你要去下罗技游戏软件,然后开启自动游戏检测模式,该模式用的是电脑上的配置文件,功能比鼠标板载内存更强。G300原本定位就是游戏鼠标,自动游戏检测意思就是罗技游戏软件会自动检测当前程序,不同程序切换到不同模式(最多三个模式)。为了与AutoHotkey配合,我们不需要自动切换模式。

AutoHotkey简介

AutoHotkey是一个脚本语言及软件,你可以设置快捷键及按下此快捷键后执行的动作。动作逻辑可以很复杂,例如如果当前窗口是Chrome,则关闭当前标签;如果是Word,则保存文件然后关闭;否则直接关闭当前窗口。由于AutoHotkey可以进行逻辑判断,所以我说罗技游戏软件里不需要自动切换模式。

AutoHotkey脚本可以解释执行,也可以编译为exe独立运行。

配合

根据我的日常应用,我目前只用到G300的两个模式。

模式一:常用模式,不亮灯

AutoHotkey的应用及与鼠标的配合_第1张图片

我的B盘是内存盘,存放下载的文件。所以每当重启后B盘就清空了,只用一次的文件自动消失。

模式二里我只定义了右下方的键,把灵格斯词霸的当前单词放入金山词霸的生词本。

以下是我的AutoHotkey代码

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

;==模式1==
; alt+shift+control+b 打开B盘。放开按键时才触发,防止按键按得稍久,就把所有窗口都关闭了。
!+^B UP::Run B:\


; alt+shift+contrl+c 关闭标签或窗口
!+^C::
WinGet, processName, ProcessName, A
if (ProcessName=="chrome.exe")
    send ^w
else 
	WinClose, A
return


;==模式2==
; alt+shift+control+s 灵格斯单词放入生词本
!+^S::
;WinGet, p_class, ProcessName, Class
;WinGet, p_txt, ProcessName, txt
;WinGet, p_atxt, ProcessName, a.txt
;ListVars
;return
; 调出灵格斯窗口
WinGet, activeProcess, ProcessName, A
;ListVars 
if (activeProcess!="Lingoes64.exe" && activeProcess!="Lingoes.exe")
{
	send {F10}
	sleep, 100 ;毫秒
	WinGet, activeProcess, ProcessName, A
	if (activeProcess!="Lingoes64.exe" && activeProcess!="Lingoes.exe")
	{
		SoundPlay, *48
		return
	}
}

; 获取单词
send ^c

; 调出生词本
WinGet, p_s, ProcessName, 生词本 ahk_class #32770
if (!p_s || p_s!="Newword.exe")
	Run "C:\Program Files (x86)\Kingsoft\PowerWord PE\Newword.exe"
else
	WinActivate, 生词本 ahk_class #32770

;sleep 100
WinWait, 生词本 ahk_class #32770

;打开添加生词窗口
send ^+A
WinWait, 添加单词 ahk_class #32770,,
if (ErrorLevel==1)
{
	SoundPlay, *48
	return
}

send ^v

counter=10
sleepTime=100
while counter>0
{
	sleep %sleepTime%
	ControlGetText, explain, Edit3, A
	if (!explain)
	{
		counter:=counter-1 
		sleepTime:=sleepTime+100
	}
	else
		counter=0
}	
send {Enter}
;ListVars
return


你可能感兴趣的:(其他)