上次写了一篇博文,讲如何通过AutoHotKey改造CaspLock,使其成为一个方便的编辑按键,并特意给出了设计的思路方便参考。

见地址:http://www.cnblogs.com/Vonng/p/4240219.html

今日闲来无事,将这一脚本进行了不少修改,增加了一些更为实用的功能,例如媒体控制。并参照@shines77的改进将鼠标操作加入脚本中。

主要的改动包括:将CapsLock键 + F1到F7改造为了媒体功能键;CapsLock+B, W, S, Q的功能变更;CapsLock+上下左右变为鼠标移动,CapsLock+Enter变为鼠标单击,CapsLock+ / \变为注释与取消注释。CapsLock+数字键变为自定义功能区,个人用于Visual Studio的调试快捷键。

新版的键位图:

设计思路:

原来键位的设计思路在老的博文中,那么就说一下新的键位设计的原因。

  1. 媒体功能键:这个东西一般笔记本键盘上会用Fn和F1-Fx键组合出来,一般键盘估计就木有了。加上自己用起来还是很方便的,这个参照的是我自己笔记本上F1-F7的功能键设定的,各位也可以自行修改为习惯按键
  2. 鼠标操作:有的时候躺着用键盘,需要用鼠标点一下什么的,实在是不方便,干脆加上鼠标移动的功能,把CapsLock加方向键变为鼠标的移动,CapsLock+回车变为左键单击。右键和中键本来也可以设置成加上Ctr,Alt来选择的,后来一想,右键的功能已经有一个菜单键了。中键压根不常用,于是就算了。
  3. CapsLock+ w和B,wb 是VIM里面跳转到下(上)一个单词词首的按键,属于用的非常频繁的一类光标移动,因此将原来的快捷方式修改为Vim对应的功能。
  4. CapsLock + G 键。这个被我修改为菜单键,也就是右Alt右边那个,那个键很常用,但是比较容易误按。因此设置到G上,方便了很多。
  5. CapsLock + Q键本来是关闭窗口,CapsLock+W是关闭标签,现在W被Vim编辑命令占用了,所以Q变为关闭标签,而Alt+CapsLock+Q变为关闭窗口。提供了逻辑和使用上的一致性
  6. CapsLock+/\变为了注释与取消注释,正斜杠在许多IDE中都是注释的快捷键,因此在此映射为Visual Studio的注释快捷键,保持逻辑设计一致性,反斜杠设计为取消注释。好处是少按一个Alt,更快了。
  7. CapsLock + 1~0,这些数字在上一个版本是单纯的上档,跟Shift的功能一样,但是这次我把它们映射到了Visual Studio的一些快捷键上。并且制作了其他开发环境下一致的命令以便切换。
  8. 原来CapsLock被ESC代替,方便Vimer使用,但CapsLock本身只是简单的设置为Always off,因此在这一版本中将CapsLock+·映射为原来的CapsLock。
  9. 有一个事情需要注意,AutoHotkey默认是运行在普通用户的身份上,在管理员权限运行的程序内,AutoHotKey就不能正常工作了。让AHK也运行在管理员权限下即可。比如用VMWare跑Linux,就可以在Linux中也使用AutoHotKey的功能了

另外,新版本脚本挂在了Github上:https://github.com/Vonng/Configuration

这里也贴出来一份。

;=====================================================================o
; Feng Ruohang's AHK Script |
; CapsLock Enhancement |
;---------------------------------------------------------------------o
;Description: |
; This Script is wrote by Feng Ruohang via AutoHotKey Script. It |
; Provieds an enhancement towards the "Useless Key" CapsLock, and |
; turns CapsLock into an useful function Key just like Ctrl and Alt |
; by combining CapsLock with almost all other keys in the keyboard. |
; |
;Summary: |
;o----------------------o---------------------------------------------o
;|CapsLock; | {ESC} Especially Convient for vim user |
;|CaspLock + ` | {CapsLock}CapsLock Switcher as a Substituent|
;|CapsLock + hjklwb | Vim-Style Cursor Mover |
;|CaspLock + uiop | Convient Home/End PageUp/PageDn |
;|CaspLock + nm,. | Convient Delete Controller |
;|CapsLock + zxcvay | Windows-Style Editor |
;|CapsLock + Direction | Mouse Move |
;|CapsLock + Enter | Mouse Click |
;|CaspLock + {F1}!{F7} | Media Volume Controller |
;|CapsLock + qs | Windows & Tags Control |
;|CapsLock + ;'[] | Convient Key Mapping |
;|CaspLock + dfert | Frequently Used Programs (Self Defined) |
;|CaspLock + 123456 | Dev-Hotkey for Visual Studio (Self Defined) |
;|CapsLock + 67890-= | Shifter as Shift |
;-----------------------o---------------------------------------------o
;|Use it whatever and wherever you like. Hope it help |
;=====================================================================o ;=====================================================================o
; CapsLock Initializer ;|
;---------------------------------------------------------------------o
SetCapsLockState, AlwaysOff ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Switcher: ;|
;---------------------------------o-----------------------------------o
; CapsLock + ` | {CapsLock} ;|
;---------------------------------o-----------------------------------o
CapsLock & `:: ;|
GetKeyState, CapsLockState, CapsLock, T ;|
if CapsLockState = D ;|
SetCapsLockState, AlwaysOff ;|
else ;|
SetCapsLockState, AlwaysOn ;|
KeyWait, `` ;|
return ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Escaper: ;|
;----------------------------------o----------------------------------o
; CapsLock | {ESC} ;|
;----------------------------------o----------------------------------o
CapsLock::Send, {ESC} ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Direction Navigator ;|
;-----------------------------------o---------------------------------o
; CapsLock + h | Left ;|
; CapsLock + j | Down ;|
; CapsLock + k | Up ;|
; CapsLock + l | Right ;|
; Ctrl, Alt Compatible ;|
;-----------------------------------o---------------------------------o
CapsLock & h:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {Left} ;|
else ;|
Send, +{Left} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{Left} ;|
else ;|
Send, +^{Left} ;|
return ;|
} ;|
return ;|
;-----------------------------------o ;|
CapsLock & j:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {Down} ;|
else ;|
Send, +{Down} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{Down} ;|
else ;|
Send, +^{Down} ;|
return ;|
} ;|
return ;|
;-----------------------------------o ;|
CapsLock & k:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {Up} ;|
else ;|
Send, +{Up} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{Up} ;|
else ;|
Send, +^{Up} ;|
return ;|
} ;|
return ;|
;-----------------------------------o ;|
CapsLock & l:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {Right} ;|
else ;|
Send, +{Right} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{Right} ;|
else ;|
Send, +^{Right} ;|
return ;|
} ;|
return ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Home/End Navigator ;|
;-----------------------------------o---------------------------------o
; CapsLock + i | Home ;|
; CapsLock + o | End ;|
; Ctrl, Alt Compatible ;|
;-----------------------------------o---------------------------------o
CapsLock & i:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {Home} ;|
else ;|
Send, +{Home} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{Home} ;|
else ;|
Send, +^{Home} ;|
return ;|
} ;|
return ;|
;-----------------------------------o ;|
CapsLock & o:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {End} ;|
else ;|
Send, +{End} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{End} ;|
else ;|
Send, +^{End} ;|
return ;|
} ;|
return ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Page Navigator ;|
;-----------------------------------o---------------------------------o
; CapsLock + u | PageUp ;|
; CapsLock + p | PageDown ;|
; Ctrl, Alt Compatible ;|
;-----------------------------------o---------------------------------o
CapsLock & u:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {PgUp} ;|
else ;|
Send, +{PgUp} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{PgUp} ;|
else ;|
Send, +^{PgUp} ;|
return ;|
} ;|
return ;|
;-----------------------------------o ;|
CapsLock & p:: ;|
if GetKeyState("control") = 0 ;|
{ ;|
if GetKeyState("alt") = 0 ;|
Send, {PgDn} ;|
else ;|
Send, +{PgDn} ;|
return ;|
} ;|
else { ;|
if GetKeyState("alt") = 0 ;|
Send, ^{PgDn} ;|
else ;|
Send, +^{PgDn} ;|
return ;|
} ;|
return ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Mouse Controller ;|
;-----------------------------------o---------------------------------o
; CapsLock + Up | Mouse Up ;|
; CapsLock + Down | Mouse Down ;|
; CapsLock + Left | Mouse Left ;|
; CapsLock + Right | Mouse Right ;|
; CapsLock + Enter(Push Release) | Mouse Left Push(Release) ;|
;-----------------------------------o---------------------------------o
CapsLock & Up:: MouseMove, 0, -10, 0, R ;|
CapsLock & Down:: MouseMove, 0, 10, 0, R ;|
CapsLock & Left:: MouseMove, -10, 0, 0, R ;|
CapsLock & Right:: MouseMove, 10, 0, 0, R ;|
;-----------------------------------o ;|
CapsLock & Enter:: ;|
SendEvent {Blind}{LButton down} ;|
KeyWait Enter ;|
SendEvent {Blind}{LButton up} ;|
return ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Deletor ;|
;-----------------------------------o---------------------------------o
; CapsLock + n | Ctrl + Delete (Delete a Word) ;|
; CapsLock + m | Delete ;|
; CapsLock + , | BackSpace ;|
; CapsLock + . | Ctrl + BackSpace ;|
;-----------------------------------o---------------------------------o
CapsLock & ,:: Send, {Del} ;|
CapsLock & .:: Send, ^{Del} ;|
CapsLock & m:: Send, {BS} ;|
CapsLock & n:: Send, ^{BS} ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Editor ;|
;-----------------------------------o---------------------------------o
; CapsLock + z | Ctrl + z (Cancel) ;|
; CapsLock + x | Ctrl + x (Cut) ;|
; CapsLock + c | Ctrl + c (Copy) ;|
; CapsLock + v | Ctrl + z (Paste) ;|
; CapsLock + a | Ctrl + a (Select All) ;|
; CapsLock + y | Ctrl + z (Yeild) ;|
; CapsLock + w | Ctrl + Right(Move as [vim: w]);|
; CapsLock + b | Ctrl + Left (Move as [vim: b]);|
;-----------------------------------o---------------------------------o
CapsLock & z:: Send, ^z ;|
CapsLock & x:: Send, ^x ;|
CapsLock & c:: Send, ^c ;|
CapsLock & v:: Send, ^v ;|
CapsLock & a:: Send, ^a ;|
CapsLock & y:: Send, ^y ;|
CapsLock & w:: Send, ^{Right} ;|
CapsLock & b:: Send, ^{Left} ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Media Controller ;|
;-----------------------------------o---------------------------------o
; CapsLock + F1 | Volume_Mute ;|
; CapsLock + F2 | Volume_Down ;|
; CapsLock + F3 | Volume_Up ;|
; CapsLock + F3 | Media_Play_Pause ;|
; CapsLock + F5 | Media_Prev ;|
; CapsLock + F6 | Media_Next ;|
; CapsLock + F7 | Media_Stop ;|
;-----------------------------------o---------------------------------o
CapsLock & F1:: Send, {Volume_Mute} ;|
CapsLock & F2:: Send, {Volume_Down} ;|
CapsLock & F3:: Send, {Volume_Up} ;|
CapsLock & F4:: Send, {Media_Play_Pause} ;|
CapsLock & F5:: Send, {Media_Prev} ;|
CapsLock & F6:: Send, {Media_Next} ;|
CapsLock & F7:: Send, {Media_Stop} ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Window Controller ;|
;-----------------------------------o---------------------------------o
; CapsLock + s | Ctrl + Tab (Swith Tag) ;|
; CapsLock + q | Ctrl + W (Close Tag) ;|
; (Disabled) Alt + CapsLock + s | AltTab (Switch Windows) ;|
; Alt + CapsLock + q | Ctrl + Tab (Close Windows) ;|
; CapsLock + g | AppsKey (Menu Key) ;|
;-----------------------------------o---------------------------------o
CapsLock & s::Send, ^{Tab} ;|
;-----------------------------------o ;|
CapsLock & q:: ;|
if GetKeyState("alt") = 0 ;|
{ ;|
Send, ^w ;|
} ;|
else { ;|
Send, !{F4} ;|
return ;|
} ;|
return ;|
;-----------------------------------o ;|
CapsLock & g:: Send, {AppsKey} ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Self Defined Area ;|
;-----------------------------------o---------------------------------o
; CapsLock + d | Alt + d(Dictionary) ;|
; CapsLock + f | Alt + f(Search via Everything);|
; CapsLock + e | Open Search Engine ;|
; CapsLock + r | Open Shell ;|
; CapsLock + t | Open Text Editor ;|
;-----------------------------------o---------------------------------o
CapsLock & d:: Send, !d ;|
CapsLock & f:: Send, !f ;|
CapsLock & e:: Run http://cn.bing.com/ ;|
CapsLock & r:: Run Powershell ;|
CapsLock & t:: Run C:\Program Files (x86)\Notepad++\notepad++.exe ;|
;---------------------------------------------------------------------o ;=====================================================================o
; CapsLock Char Mapping ;|
;-----------------------------------o---------------------------------o
; CapsLock + ; | Enter (Cancel) ;|
; CapsLock + ' | = ;|
; CapsLock + [ | Back (Visual Studio) ;|
; CapsLock + ] | Goto Define (Visual Studio) ;|
; CapsLock + / | Comment (Visual Studio) ;|
; CapsLock + \ | Uncomment (Visual Studio) ;|
; CapsLock + 1 | Build and Run(Visual Studio) ;|
; CapsLock + 2 | Debuging (Visual Studio) ;|
; CapsLock + 3 | Step Over (Visual Studio) ;|
; CapsLock + 4 | Step In (Visual Studio) ;|
; CapsLock + 5 | Stop Debuging(Visual Studio) ;|
; CapsLock + 6 | Shift + 6 ^ ;|
; CapsLock + 7 | Shift + 7 & ;|
; CapsLock + 8 | Shift + 8 * ;|
; CapsLock + 9 | Shift + 9 ( ;|
; CapsLock + 0 | Shift + 0 ) ;|
;-----------------------------------o---------------------------------o
CapsLock & `;:: Send, {Enter} ;|
CapsLock & ':: Send, = ;|
CapsLock & [:: Send, ^- ;|
CapsLock & ]:: Send, {F12} ;|
;-----------------------------------o ;|
CapsLock & /:: ;|
Send, ^e ;|
Send, c ;|
return ;|
;-----------------------------------o ;|
CapsLock & \:: ;|
Send, ^e ;|
Send, u ;|
return ;|
;-----------------------------------o ;|
CapsLock & 1:: Send,^{F5} ;|
CapsLock & 2:: Send,{F5} ;|
CapsLock & 3:: Send,{F10} ;|
CapsLock & 4:: Send,{F11} ;|
CapsLock & 5:: Send,+{F5} ;|
;-----------------------------------o ;|
CapsLock & 6:: Send,+6 ;|
CapsLock & 7:: Send,+7 ;|
CapsLock & 8:: Send,+8 ;|
CapsLock & 9:: Send,+9 ;|
CapsLock & 0:: Send,+0 ;|
;---------------------------------------------------------------------o

CapsLock Enhancement via AutoHotKey的更多相关文章

  1. Emacs 安装配置使用教程

    Emacs 安装配置使用教程 来源 https://www.jianshu.com/u/a27b97f900f7 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑器和编辑器之神 - ...

  2. Win下最爱效率利器:AutoHotKey

    AutoHotkey是一个windows下的开源.免费.自动化软件工具.它由最初旨在提供键盘快捷键的脚本语言驱动(称为:热键),随着时间的推移演变成一个完整的脚本语言.但你不需要把它想得太深,你只需要 ...

  3. 实用AutoHotkey功能展示

    AutoHotkey是什么 AutoHotkey是一个自动化脚本语言. AutoHotkey有什么用 可以让你用热键操控一切,操作电脑就像在表演魔术 我的口号 AutoHotkey!用过都说好! Au ...

  4. 让你的Capslock键变废为宝

    Capslock 键的劣性 如果你是 Windows 系统用户,就会发现,很多时候我们是用不到 Capslock 键的.Capslock 键是切换大小写的锁定,而在平常工作中,只要摁住 Shift 键 ...

  5. 使用autohotkey修改方向键、回车和启动程序

    具体步骤 下载并安装autohotkey. 在你觉得合适的地方鼠标右键-新建-autohotkey script(脚本):或者创建一个别的文件,再把后缀改成ahk也可以 一个新建的ahk文档里面会有这 ...

  6. python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题

    笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...

  7. AutoHotKey (AHK) 按键表+自定义快捷键简化操作的教程

    自定义快捷键简化操作的教程 ① 下载安装AutoHotKey,并用记事本新建一个MyHotKey.ahk文件,录入如②中信息 ② 下图可以实现,按F6即可触发“Ctrl+C”的复制快捷键,同理F7可实 ...

  8. 我的AutoHotkey脚本

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; En ...

  9. autohotkey快捷键

    ;已经基本修复了输入带shift的时候跟输入法中英文切换之间的冲突 SetStoreCapslockMode, off SetKeyDelay, ^CapsLock:: #UseHook ;用这个和下 ...

随机推荐

  1. uni-app 网络请求

    uni.request发起网络请求 url 开发者服务器接口地址 data 请求的参数 header method dataType responseType 设置响应的数据类型 statusCode ...

  2. 如何设置select只读不可编辑且select的值可传递(摘自百度)

    selectname="role"id="role"οnfοcus="this.defaultIndex=this.selectedIndex;&qu ...

  3. IntelliJ IDEA 快捷键终极大全,速度收藏!

    ​阅读本文大概需要 6 分钟. ▌自动代码 常用的有 fori/sout/psvm+Tab 即可生成循环.System.out.main 方法等 boilerplate 样板代码 . 例如要输入 fo ...

  4. 闲话Dicom

    最近在准备一场有关DICOM应用的讲座,整理了一下思路.想了几个问题,发现挺有意思的,想与大家共同分享.接触过DICOM,应该了解普通DICOM 文件包含的四级属性,病人,检查,序列,影像.每一级别需 ...

  5. Parallel.For循环与普通的for循环

    前两天看书发现了一个新的循环Parallel.For,这个循环在循环期间可以创建多个线程并行循环,就是说循环的内容是无序的.这让我想到了我前面的牛牛模拟计算是可以用到这个循环的,我前面的牛牛模拟计算是 ...

  6. vs2017+qt5.x编译32位应用<转>

    原文地址:https://www.cnblogs.com/woniu201/p/10862170.html 概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用ms ...

  7. ES开启慢查询日志

    默认情况,慢日志是不开启的.要开启它,需要定义具体动作(query,fetch 还是 index),你期望的事件记录等级( WARN.INFO.DEBUG.TRACE 等),以及时间阈值. es有几种 ...

  8. Java学习-054-Mybatis IN查询,通过 foreach 获取列表数据

    通过如下语句查询商品订单信息: ,,,) 在 Mapper.java 中定义如下接口: List<GoodsOrder> findGoodsOrderByIds(String ids); ...

  9. 阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-8 优化Swagger2显示

    左侧的全是英文 忽略api 把HelloController也忽略掉 重启api的服务,刷新页面.只剩下了passport的Controller 给passport接口加上注解. 重启服务,并刷新页面 ...

  10. 连接ftp服务器 JDK 1.7

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...