鼠标快捷键设置心得及与AutoHotKey的配合

2014年8月31日

所谓鼠标快捷键就是鼠标上除了左右键以外的按键。很多游戏鼠标都是多键的。我用的罗技G300鼠标(图1)共有5个可编程按键加1个模式切换键,模式有三种,所以理论上有3×5=15种快捷键。装上了G300鼠标驱动程序后,每种模式每个鼠标键都可以设置其对应的快捷键,比如可以设置左上按键为alt+左方向键,那么按左上键后,鼠标驱动就模拟发送alt+左方向键,效果跟按键盘上的alt+左方向键一样。

4

鼠标驱动一般还有更强大的功能,如连续按键(alt+左方向键,等待100毫秒,ctrl+w)、启动程序等等。这些功能都可以被AutoHotKey实现,先不讨论。

鼠标快捷键还是键盘快捷键?

如一个快捷键alt+,到底应该用键盘发送还是用鼠标发送呢?我发现的判断方法如下:

  • 如果这个快捷键的前/后操作都是鼠标操作,则可设置为鼠标快捷键。
  • 如果一个功能可以通过鼠标点击完成,也可以通过快捷键完成,但鼠标点击步数过多或鼠标移动离开热点区域;则可以设置为鼠标快捷键。

举个实际例子,我用chrome浏览器,回到上一页我们可以按左上角的左箭头按钮,也可以按alt+←。我浏览网页时,手一般在鼠标上,且光标一般在屏幕中心而不是屏幕左上角。所以我要回上一页,要么光标移动到屏幕左上角点击后退按钮(然后移回屏幕中心,因为要点链接),要么左手放到键盘的alt上右手离开鼠标放到键盘的←上,按键后右手回到鼠标上。操作不便,所以可以设置为鼠标快捷键。

再来一个我朋友的例子(略有修改),他用类unix系统,喜爱命令行。他设置了鼠标快捷键上enter(执行上一条命令)。我认为这个命令设置得并不完美,因为在命令行界面,双手都在键盘上,为了节省那么一次按键(键盘发送上enter要击键两次,用鼠标发送只需击键一次),就把右手从键盘移到鼠标、握住鼠标、按下鼠标键、移回键盘,似乎不那么值得。

硬模式与软模式

很多多键鼠标可以设置模式,像我的G300就有三个模式,要用模式切换键来切换。我把这个受鼠标驱动支持的模式称为硬模式。

因为硬模式要用鼠标键来切换,不可编程,所以我个人感觉用途较小,当用户可以长时间处于同一个环境而不改变时,可以把这个环境里用的快捷键分配到一个硬模式。全屏游戏是最好的环境,因为你中间不太可能切换出去聊qq、上网、写word……你可以设置鼠标键为换弹夹、开狙击镜、释放最常用的魔法等等。读者如果玩什么游戏的话,可以去那个游戏的论坛里搜搜看,说不定有关于这个游戏的鼠标快捷键、AutoHotKey设置心得。

通过编写AutoHotKey代码,区分当前环境,从而执行不同的快捷键,这个称为软模式。软模式在功能上包含硬模式,像上面的游戏模式,AutoHotKey可以如果检查当前窗口是某某游戏,那么左上键是换弹夹;如果当前窗口是Chrome,则是后退到上一页……硬模式的好处似乎只是把快捷键管理得整洁一点。

我的鼠标快捷键和AutoHotKey配置

尽管G300有三个模式,得益于AutoHotKey的软模式,我只完全使用了第一个模式,第二个模式只用了一个键,第三个模式完全没用。

第一个模式(通用模式)

左上:Alt+Windows+h,由AutoHotKey接收

  • 如果当前窗口是Chrome,则发送alt+左方向键(后退到上一页)。
  • 如果当前窗口是资源管理器,则发送alt+左方向键(后退到上一页)。

右上:Alt+Windows+l,由AutoHotKey接收

  • 如果当前窗口是Chrome,则发送alt+右方向键(前进到下一页)。
  • 如果当前窗口是资源管理器,则发送alt+右方向键(前进到下一页)。

AutoHotKey额外条目

当接收到Contrl+Alt+Windows+h:

  • 如果当前窗口是Chrome,则发送control+shift+tab(上一标签页)。

当接收到Contrl+Alt+Windows+l:

  • 如果当前窗口是Chrome,则发送control+tab(下一标签页)。

所以在Chrome里,我单按鼠标左上键,是后退。我左手按键盘的control,右手按鼠标左上键,则是上一标签页。

左下:鼠标驱动设置,打开B盘

B盘是我的内存盘,存放下载的文件。

右下:alt+shift+control+c,AutoHotKey接收

  • 如果当前窗口是Chrome,则发送control+w。(关闭标签)
  • 如果当前窗口是灵格斯词霸,则发送esc。(窗口最小化到托盘)
  • 否则发送关闭窗口的Windows消息。

中:Windows+control+y,AutoHotKey接收

  • 如果光标为I形(光标放在输入框上的形状),则发送control+v(复制)。
  • 如果当前窗口是Chrome,则复制标签。(我装了Dedup Tabs,自动关闭重复标签,AutoHotKey代码能在启用此插件的情况下复制标签)
  • 如果当前窗口是资源管理器,则发送control+n(复制窗口)。

编程软模式

我用Visual Studio写C#,用eclipse写Java。它们都可以单步调试。单步有单步进入和单步跳过。

鼠标键1

  • 如果当前窗口是Visual Studio,则发送单步跳过的快捷键。
  • 如果当前窗口是eclipse,则发送单步跳过的快捷键。

鼠标键2

  • 如果当前窗口是Visual Studio,则发送单步进入的快捷键。
  • 如果当前窗口是eclipse,则发送单步进入的快捷键。