写作 / 程序员_自定义windows键盘映射 | Autohotkey教程

96
Ro蜀黍
2017.06.06 23:48* 字数 1553

版权声明
本文首发自微信公共帐号: iNotes;
转载时请务必注明作者。


今天的教程适合符合下面这种人:

使用windows操作系统;
需要高频率地使用键盘而不是鼠标。

配置完成以后,在进入一个文本编辑器以后,几乎就可以不用鼠标了。


Autohotkey介绍

我们用到的工具就是Autohotkey这款windows下的神奇软件。

还记得上一篇文章我写了tasker教程对吧。里面提到『tasker』是安卓端的自动化操作神器。而相对应的windows下的类似软件就是Autohotkey这个软件。

  • 程序的组成 = 数据结构 + 算法。

算法 = 方法论,包括一系列规则和流程。

  • 程序的功能 = 解决一个问题。

tasker和Autohotkey都是可以自定义功能的编程工具。

我们小时候都玩过积木或类似的东西。给一些可组合的方块、长条、球,我们就能组合出来汽车、飞机、坦克等等满足我们需求的东西。但当我们想要一个三角形块的时候,可能这个积木套件里没有。而另一个套件,甚至可以用更小的颗粒来拼出一个三角形块来。

编程类似搭积木,用组件实现功能、解决问题。而不同的编程工具就类似于不同的积木套件。不同的积木套件能实现的功能也不完全相同。

在计算机世界里,绝大部分程序设计语言,比如C、C++、python、js等等,几乎每种语言都可以实现我们想要的任何功能。就像前面颗粒足够细的那种积木套件一样。

而像tasker和Autohotkey这种低层次的『程序设计语言』,其实就是被封装过的编程语言。类似于只有方块、长条、球的积木套件。不能实现所有的功能,但基本也够用。

所以Autohotkey的本质,其实就是个『功能设计语言』/『程序设计语言』,一套积木。

这套积木用在windows PC平台上,能够调用windows系统的api来自定义我们需要的功能。


需求

好了,我们开始列一下我们需要的自动化、简化操作的功能。本文针对的只是Autohotkey的键盘映射的功能,当我们按下某些组合键的时候,就能执行某这功能。(不过其他的大部分功能都很类似)

这里我做的功能都是面向程序员和写作人士的,当然对其他人来说,用其中的一部分,也能极大地提高你操作的效率和畅快性。

少废话,直接上东西:

  • 声音:静音、音量+、音量-。
  • 光标移动:上下左右、到行首/尾。
  • 选择:往前/后选择一个单词(汉字或英文)、选中行首到当前位置的文字 / 当前位置到、全选页面内所有问题、选中整行文字。
  • 删除:前删一格、删除整行。
  • 保存当前文件
  • 符号:!@#$%^&*()=<>。

实现第一个功能:

  1. 首先在Autohotkey官网下载软件:https://www.autohotkey.com/
  2. 右键新建一个Autohotkey格式的脚本文件,后缀为.ahk:
    image.png
  3. 用任何文本编辑器打开进行编辑,比如“记事本”就可以。
  4. 在这个记事本里输入 CapsLock & ``;::send,{Enter}`,保存。
  5. 右键.ahk文件,出现run script / compile script, 第一个直接执行这个写好的文本程序;第二个是把这个文本格式的文件转换成exe,以便以后运行。

好了现在你按下『大小写键』+『;』键,就相当于按下了回车。(`是转义符)

绝大部分键盘映射都可以用类似的简单语言做出来。


接下来怎么继续研究实现呢?
我的建议是,尽量不要研究这个东西因为没有必要,具体而言:

  1. 看一下官网文档的纵述,对这个东西有个了解。
  2. 看别人做好的东西,改一改做为己用。
  3. 有后续需求的时候,搜索+官方+独立思考解决。

为什么说尽量不要研究呢,因为

它毕竟是个低端积木,哪天你会用到三角形呢?


最后呢,这里就直接给出一个高频键盘映射方案:
;1. shift+capLock代替capLock,从而解放capLock这个『废物键』 +CapsLock:: GetKeyState, CapsLockState, CapsLock, T if CapsLockState = D SetCapsLockState, AlwaysOff else SetCapsLockState, AlwaysOn KeyWait, `` return
;2. 回车 CapsLock & ``;::send,{Enter}
;3. capsLock + jkli 实现对方向键的映射
CapsLock & j:: Send {left}
CapsLock & l:: Send {right}
CapsLock & i:: Send {up}
CapsLock & k:: Send {down}
;4. 往前删除一格
CapsLock & h:: Send, {BS}
`
使用方法和上面实现第一个功能时一样,只是把第 4 步里记事本里的内容换成上面这些而已。


如果有问题,可以后台交流一波哦。

最后有了两个事儿,我还是要说明。

  1. 一开始会不习惯(比如习惯性地想要去按enter键而不是capslock+;),但是相信我这个过来人,这种难受最多持续几天。然后你会觉得原来的方式是多么地低效,而且会觉得原来的更加难受。
  2. 如果你有别的需求,可以继续做。但相信我,就算你只用我上面放的这四部分的功能,就已经能体会这种巨大的快捷和畅快感了。

如有帮助,欢迎关注微信公众号:iNotes

iNotes.jpg
已发布
Web note ad 1