• CapsLock Enhancement via AutoHotKey


         上次写了一篇博文,讲如何通过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++
    otepad++.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
    
  • 相关阅读:
    StarUML3.x的破解方法
    图解git基本使用
    Elasticsearch分页查询From&Size vs scroll vs search_after
    MySQL索引及使用详解
    mysql中key 、primary key 、unique key 与index区别
    MySQL避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
    git config配置快捷命令
    linux基础命令使用详解
    MySQL索引详解——full-text,b-tree,hash,r-tree
    Insert Interval 面试题leetcode.
  • 原文地址:https://www.cnblogs.com/Vonng/p/4294344.html
Copyright © 2020-2023  润新知