使用AutoHotKey更换键位
缘起
因为使用emcas的关系,所以 CapsLock
是一定要替换掉的。的确,这个键的使用率其实超级低,对于我来讲基本是不用的,换掉也是早晚的事。
最简单的方法是修改注册表,或者使用类似原理的工具。
根据Xah Lee的方法,也是很多人推荐的方法,是使用AutoHotKey,因为除了更换键位外,还可以自定义一些其它功能。Windows: Swap CapsLock Alt Ctrl Keys
但是不知道为什么我用这个方法就是不行,原理非常简单 Capslock::Ctrl
就这么一行,但是在我这里就是各种不成功,而且在按下的同时还会出现,第一次这按了 CapsLock-c
后复制成功了,但同时 CapsLock
状态也启动了的问题。
最后在相当长的历史时间内,我是使用了一个叫 “keytweak”的软件,根本原理也是修改注册表,提供了一个图形化界面。配合着Autohotkey自定义了一些组合键使用。
但是有一天,由于某种原因更新了一个杀毒软件之后,突然不能用了,经检查是似乎这个软件为默认把修改键位的注册表项清空。
因此由回到了AutoHotKey
但是这次很奇怪,也可能是升级了AutoHotKey的关系,1.1.30.00版,之前遇到的问题没有了,可以基本正常使用了。说基本是因为还有一些缺陷:
- 如果按了
CapsLock
后,突然又不想按下那个c
了,这时把手指抬起来后,大写状态就打开了,而且可能还没意识到。 - 我定义了
Ctrl-;
和"backspace"的相同的,如果在中文输入法状态下,如果要输入“今天”这两个字,在完成“今”后,在输入“tie”的时候发现应该是输入“a”而不是“e”的话,此时要“backspace”,如果使用Ctrl-;
因为我实际按的是CapsLock-;
在按下CapsLock
的瞬间,输入法会切换成英文,把输入到了一半的拼音全部作废。然后此时再按下“j”,删除的不是那个“e”,而是前一个汉字“今”。
一直没有想到好的办法,直到今天突然看到了这么一个命令: SetCapsLockState,AlwaysOff
从字面上就可以理解,这个命令是永远关掉了这个键的功能。
实验后完成符合要求,一切完美了。