Mac&Win功能键魔改:让CapsLock焕发第二春-阿里云开发者社区

开发者社区> 开发与运维> 正文

Mac&Win功能键魔改:让CapsLock焕发第二春

简介: # Capslock *Make CapsLock Great Again!* ![trump.jpg](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/6b51ae83408d197e315b80dc0e215821.jpg) 显著提高APM!! * 功能强大:基于⇪CapsLock的新功能键Hyper可以与任何

Capslock

Make CapsLock Great Again!
trump.jpg

显著提高APM!!

  • 功能强大:基于⇪CapsLock的新功能键Hyper可以与任何按键组合,提供强大的定制性。
  • 精心设计:在作者两年使用实践中不断雕琢,将最常使用的操作预置于核心键区,显著提高操作效率。
  • 轻量跨平台:分别基于Karabiner()AutoHotKey(⊞)以脚本方式实现。
  • 部署方便:放在随身装机U盘中,还是托管在Github上,简单几步即可复刻环境。

CapsLock() : 使用姿势参考

CapsLock(⊞)

前言

⇪CapsLock,即大写锁定键,其起源可追溯至打字机时代。打字机是纯机械的设备,当按下Shift时,整套设备会与墨条纸带发生位移,使小写字母“上档”为大写字母。此等操作对小拇指是不小的负担,以致连续输入两到三个大写字母都比较吃力。于是在今天键盘上⇪Capslock的位置上出现了其原型Shiftlock功能键:可以在大小写状态之间切换与保持。这样的设计解决了一指禅选手的困境,更减轻了打字员的负担。

然而随着科技的进步,这样的问题已经不存在了。除了一指禅选手,Shift能够毫不费力的满足人们的需求。而⇪Capslock这个'多余'的按键,则因为历史惯性保留在了绝大多数键盘的黄金位置。

历史上有很多人注意到了这一点,不少人都琢磨着让这个占据宝地的按键发挥出更大的作用。一些键盘直接去掉了⇪Capslock键,而另一些则直接把它作为⌃Ctrl使用。在一些Unix Like(e.g )环境中,⇪Capslock还被用作语言切换的按键。有些人将⇪Capslock改为复合功能键:单独键入时是⎋ESC,而按住不放时是⌃Ctrl。

不过为什么要浪费这样一个绝佳的机会呢?我们所能做的远比这更多:

譬如创造一个类似⇧ Shift、⌃ Ctrl、⌥ Option、⊞ Win、⎇ Alt 、 ⌘ Command等修饰键的全新功能键:

​ Hyper

功能说明

以Mac为例:

keyboard-layout.png

右手核心区

  • 基本映射

    • 按住⇪CapsLock,映射为 Hyper
    • 按下⇪CapsLock,映射为⌥␢ 输入法切换(二选一,默认)
    • 按下⇪CapsLock,映射为⎋ ESC (二选一)
  • 导航键映射

    • 按下 Hyper启用光标移动,按下⌘时启用光标选择
    • H ↦ ← (VI导航键:H映射为左)
    • J ↦ ↓ (VI导航键:J映射为左)
    • K ↦ ↑ (VI导航键:K映射为左)
    • L ↦ → (VI导航键:L映射为右)
    • U ↦ ⇞ (U映射为PageUp)
    • I ↦ ↖ (I映射为Home)
    • O ↦ ↘ (O映射为End)
    • P ↦ ⇟ (P映射为Pagedown)
    • 删除键
    • N ↦ ⌥⌫ (删除光标左侧一个单词)
    • M ↦ ⌫ (删除光标左侧一个字符)
    • , ↦ ⌦ (删除光标右侧一个字符)
    • . ↦ ⌥⌦ (删除光标右侧一个单词)

左手核心区

  • 窗口操作

    • ⇥ ↦ ⌃⇥ (Tab 映射为正向切换标签页)
    • ⌘⇥↦ ⌃⇧⇥ (⌘Tab 映射为反向切换标签页)
    • Q ↦ ⌘Q (关闭窗口)
    • W ↦ ⌘W (关闭标签页)
    • A ↦ ⌃⌥⇧⌘A (Moom-Meta键,※一个窗口操作软件)
    • ⌘A ↦ F11 (回到桌面)
    • S ↦ ⌃⇥ (切换标签页)
    • ⌘S ↦ ⌃⇧⇥ (反向切换标签页 )
  • Bash控制

    • Z ↦ ⌃Z (作业停止信号:SIGTSTP))
    • X ↦ ⌃B (Tmux-Prefix,※一个终端复用软件)
    • C ↦ ⌃C (作业中断信号:SIGINT)
    • V ↦ , (Vim-Leader键)
    • D ↦ ⌃D (发送EOF)
  • 应用快捷方式

    • E ↦ Google Chrome
    • ⌘E ↦ Finder
    • R ↦ iTerm
    • ⌘R ↦ ^R (IDE-Run)
    • T ↦ Sublime Text
    • ⌘T ↦ Typora
    • F ↦ Dash
    • ⌘F ↦ Dictionary
    • G ↦ IntelliJ IDEA
    • G ↦ CLion

键盘第一行:功能键

  • 功能键映射

    • F1 ↦ BrightnessDown
    • F2 ↦ BrightnessUp
    • F3 ↦ ExposeAll
    • F4 ↦ LaunchPad
    • F5 ↦ KeyboardLightDown
    • F6 ↦ KeyboardLightUp
    • F7 ↦ MusicPrev
    • F8 ↦ MusicPlay
    • F9 ↦ MusicNext
    • F10 ↦ Mute
    • F11 ↦ VolumeDown
    • F12 ↦ VolumeUp

键盘第二行:数字键

  • 上档键映射

    • [12...-=] ↦ ⇧[12...-=] (将数字键、减号、等于号上档为对应符号)
    • [] ↦ ⇧90 '()' (将方括号映射为圆括号)
    • ' ↦ ⇧- '_' (将单引号映射为下划线)

主键区其他按键

  • 主键区其他杂项

    • ⎋ ↦ ⇪ (Escape 将Hyper转义回⇪CapsLock)
    • ␢ ↦ ⎋ (空格 映射为⎋ESC)
    • \ ↦ ⌃/ (斜杠 映射为注释/解注释)
    • ` ↦ ⌃⇧⌘4(反引号 映射为选取截图区域并存储)
    • ↦ ⌃⇧4` (⌘反引号 映射为选取截图区域至剪贴板)
    • ' ↦ = (单引号 映射为等于号)

特殊键区

  • PC键盘特殊按键映射

    • Ins ↦ ⇧⌥F1 (Insert 微调提升屏幕亮度)
    • Del ↦ ⇧⌥F2 (Delete 微调降低屏幕亮度)
    • ↘ ↦ ⇧⌥F5 (Home 微调提升键盘背光亮度)
    • ↖ ↦ ⇧⌥F6 (End 微调降低键盘背光亮度)
    • ⇟ ↦ ⇧⌥F11 (PgUp 微调提升音量)
    • ⇞ ↦ ⇧⌥F12 (PgDn 微调降低音量)
    • PrintScreen ↦ ⌃⇧⌘3 (保存全屏截图至剪贴板)
    • PrintScreen ↦ ⌃⇧⌘3 (保存全屏截图至桌面文件)
    • ScrollLock ↦ VolumeMute (ScrollLock静音)
    • Pause ↦ MusicPlay (Pause映射为音乐播放)
  • 光标键映射

    • ↑ ↦ MouseUp
    • ↓ ↦ MouseDown
    • ← ↦ MouseLeft
    • → ↦ MouseRight
    • ↩ ↦ MouseLButton
    • \ ↦ MouseRButton

符号参考表

Modifiers: Mac

Sym Key
Hyper
Control
Option
Shift
Command

Modifiers: ⊞Windows

Sym Key
Hyper
Control
Windows
Shift
Alter

Normal Keys

GLYPH NAME
Apple
Command, Cmd, Clover, (formerly) Apple
Control, Ctl, Ctrl
Option, Opt, (Windows) Alt
Alt
Shift
Caps lock
Eject
↩, ↵, ⏎ Return, Carriage Return
Enter
Delete, Backspace
Forward Delete
Escape, Esc
Right arrow
Left arrow
Up arrow
Down arrow
Page Up, PgUp
Page Down, PgDn
Home
End
Clear
Tab, Tab Right, Horizontal Tab
Shift Tab, Tab Left, Back-tab
Space, Blank
Space, Blank
Power
Num lock
?⃝ Help
Context menu

Mac版本脚本

CapsLock() 更新中

<?xml version="1.0"?>
<root>
    <!-- Introduction -->
    <item>
        <name style="important">CapsLock Enhancement</name>
        <appendix></appendix>
        <appendix>Make CapsLock Great Again!</appendix>
        <appendix></appendix>
        <appendix>※Author: Vonng (fengruohang@outlook.com)</appendix>
        <appendix>※Document: https://github.com/Vonng/Capslock/tree/master/osx</appendix>
        <appendix>※Environment: Mac OS X darwin64 via Karabiner</appendix>
        <appendix>※License: WTFPL</appendix>
        <appendix>※Prequisite: Maps ⇪CapsLock to F19(KeyCode:80) first. (via Seil)</appendix>
    </item>


    <!-- Hyper declaration -->
    <modifierdef>HYPER</modifierdef>


    <item>
        <name style="important">CapsLock setup</name>
        <appendix>Hold CapsLock to Hyper</appendix>
        <appendix>⇪[Hold] ↦ </appendix>
        <appendix></appendix>
        <appendix>Press CapsLock to ?</appendix>
        <appendix><![CDATA[* ⎋  ESC ]]></appendix>
        <appendix><![CDATA[* ⌥␢ Language-Switcher]]></appendix>
    </item>


    <!-- CapsLock to Hyper/Language Switcher(Recommend) -->
    <item>
        <name>Press CapsLock to Language-Switcher</name>
        <appendix>⇪[Press] ↦ ⌥␢</appendix>

        <identifier>private.capslock-langswitcher</identifier>

        <autogen>
            --KeyOverlaidModifier--
            KeyCode::F19,
            KeyCode::VK_MODIFIER_HYPER,
            KeyCode::SPACE, ModifierFlag::CONTROL_L
        </autogen>
    </item>


    <!-- CapsLock to Escape -->
    <item>
        <name>Press CapsLock to Escape</name>
        <appendix>⇪[Press] ↦ ⎋</appendix>

        <identifier>private.capslock-escape</identifier>

        <autogen>
            --KeyOverlaidModifier--
            KeyCode::F19,
            KeyCode::VK_MODIFIER_HYPER,
            KeyCode::ESCAPE
        </autogen>
    </item>


    <!-- Hyper Navigator -->
    <item>
        <name>Hyper Navigator</name>
        <appendix><![CDATA[H ↦ ← (CursorLeft)]]></appendix>
        <appendix><![CDATA[J ↦ ↓ (CursorDown)]]></appendix>
        <appendix><![CDATA[K ↦ ↑ (CursorUp)]]></appendix>
        <appendix><![CDATA[L ↦ → (CursorRight)]]></appendix>
        <appendix><![CDATA[U ↦ ⇞ (PageUp)]]></appendix>
        <appendix><![CDATA[I ↦ ↖ (Home)]]></appendix>
        <appendix><![CDATA[O ↦ ↘ (End)]]></appendix>
        <appendix><![CDATA[P ↦ ⇟ (Pagedown)]]></appendix>
        <appendix></appendix>
        <appendix>※Hint: Hold additional ⌘(Left) key for selection</appendix>
        <identifier>private.hyper-navigator</identifier>

        <!-- H: Left -->
        <autogen>
            --KeyToKey--
            KeyCode::H, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_LEFT | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::H, ModifierFlag::HYPER,
            KeyCode::CURSOR_LEFT
        </autogen>

        <!-- J: Down -->
        <autogen>
            --KeyToKey--
            KeyCode::J, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_DOWN | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::J,ModifierFlag::HYPER,
            KeyCode::CURSOR_DOWN
        </autogen>

        <!-- K: Up -->
        <autogen>
            --KeyToKey--
            KeyCode::K, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_UP | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::K,ModifierFlag::HYPER,
            KeyCode::CURSOR_UP
        </autogen>

        <!-- L: Right -->
        <autogen>
            --KeyToKey--
            KeyCode::L, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::CURSOR_RIGHT | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::L,ModifierFlag::HYPER,
            KeyCode::CURSOR_RIGHT
        </autogen>

        <!-- U: PageUp -->
        <autogen>
            --KeyToKey--
            KeyCode::U, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::PAGEUP | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::U,ModifierFlag::HYPER,
            KeyCode::PAGEUP
        </autogen>

        <!-- I: HOME -->
        <autogen>
            --KeyToKey--
            KeyCode::I, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::HOME | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::I,ModifierFlag::HYPER,
            KeyCode::HOME
        </autogen>

        <!-- O: END -->
        <autogen>
            --KeyToKey--
            KeyCode::O, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::END | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::O,ModifierFlag::HYPER,
            KeyCode::END
        </autogen>

        <!-- P: PageDown -->
        <autogen>
            --KeyToKey--
            KeyCode::P, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::PAGEDOWN | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::P,ModifierFlag::HYPER,
            KeyCode::PAGEDOWN
        </autogen>
    </item>


    <!-- Hyper Deletion -->
    <item>
        <name>Hyper Deletion</name>
        <appendix><![CDATA[N ↦ ⌥⌫ (Delete a word ahead)]]></appendix>
        <appendix><![CDATA[M ↦ ⌫  (Delete a char ahead)]]></appendix>
        <appendix><![CDATA[, ↦ ⌦  (Forward Delete a char)]]></appendix>
        <appendix><![CDATA[. ↦ ⌥⌦ (Forward Delete a word)]]></appendix>
        <identifier>private.hyper-deletion</identifier>

        <autogen>
            --KeyToKey--
            KeyCode::N, ModifierFlag::HYPER,
            KeyCode::DELETE, ModifierFlag::OPTION_L,
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::M,ModifierFlag::HYPER,
            KeyCode::DELETE
        </autogen>

        <autogen>
            --KeyToKey--
            KeyCode::COMMA,ModifierFlag::HYPER,
            KeyCode::FORWARD_DELETE
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::DOT,ModifierFlag::HYPER,
            KeyCode::FORWARD_DELETE, ModifierFlag::OPTION_L
        </autogen>
    </item>


    <!-- Hyper Window Control -->
    <item>
        <name>Hyper Window-Manipulation</name>
        <appendix><![CDATA[Q  ↦ ⌘Q    (Close Window)]]></appendix>
        <appendix><![CDATA[W  ↦ ⌘W    (Close Tab)]]></appendix>
        <appendix><![CDATA[A  ↦ ⌃⌥⇧⌘A (Moom Prefix)]]></appendix>
        <appendix><![CDATA[⌘A ↦ F11   (Desktop)]]></appendix>
        <appendix><![CDATA[S  ↦ ⌃⇥    (Tab Switch)]]></appendix>
        <appendix><![CDATA[⌘S ↦ ⌃⇧⇥   (Reverse Tab Switch)]]></appendix>
        <identifier>private.hyper-window-manipulation</identifier>

        <!-- Tab to SwitchTab-->
        <autogen>
            --KeyToKey--
            KeyCode::TAB, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::TAB,ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L
        </autogen>

        <!-- ⌘Tab to Reverse SwitchTab-->
        <autogen>
            --KeyToKey--
            KeyCode::TAB, ModifierFlag::HYPER,
            KeyCode::TAB,ModifierFlag::CONTROL_L
        </autogen>

        <!-- ⌘Q: Quit Window -->
        <autogen>
            --KeyToKey--
            KeyCode::Q, ModifierFlag::HYPER,
            KeyCode::Q, ModifierFlag::COMMAND_L
        </autogen>

        <!-- ⌘W Close Tab -->
        <autogen>
            --KeyToKey--
            KeyCode::W, ModifierFlag::HYPER ,
            KeyCode::W, ModifierFlag::COMMAND_L
        </autogen>

        <!-- Hyper-A Moom-Prefix (Set to Physical Hyper-A) -->
        <autogen>
            --KeyToKey--
            KeyCode::A,ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::F11
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::A,ModifierFlag::HYPER ,
            KeyCode::A,ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::CONTROL_L |
            ModifierFlag::SHIFT_L
        </autogen>

        <!-- ^Tab: Switch Tag -->
        <autogen>
            --KeyToKey--
            KeyCode::S,ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::TAB,ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::S,ModifierFlag::HYPER,
            KeyCode::TAB,ModifierFlag::CONTROL_L
        </autogen>
    </item>


    <!-- Hyper Bash Control -->
    <item>
        <name>Hyper Bash-Control</name>
        <appendix><![CDATA[Z ↦ ⌃Z (SIGTSTP)]]></appendix>
        <appendix><![CDATA[X ↦ ⌃B (Tmux-Prefix)]]></appendix>
        <appendix><![CDATA[C ↦ ⌃C (SIGINT)]]></appendix>
        <appendix><![CDATA[V ↦ ,  (VIM Leader)]]></appendix>
        <appendix><![CDATA[D ↦ ⌃D (EOF)]]></appendix>

        <identifier>private.hyper-bash-control</identifier>

        <!-- ^Z SIGTSTP -->
        <autogen>
            --KeyToKey--
            KeyCode::Z, ModifierFlag::HYPER ,
            KeyCode::Z, ModifierFlag::CONTROL_L
        </autogen>

        <!-- ^X Tmux Prefix -->
        <autogen>
            --KeyToKey--
            KeyCode::X, ModifierFlag::HYPER ,
            KeyCode::B, ModifierFlag::CONTROL_L
        </autogen>

        <!-- ^C SIGINT -->
        <autogen>
            --KeyToKey--
            KeyCode::C, ModifierFlag::HYPER,
            KeyCode::C, ModifierFlag::CONTROL_L
        </autogen>

        <!-- ^V Vim -->
        <autogen>
            --KeyToKey--
            KeyCode::V, ModifierFlag::HYPER ,
            KeyCode::COMMA
        </autogen>

        <!-- ^D EOF  +⌘=^R (Debug) -->
        <autogen>
            --KeyToKey--
            KeyCode::D, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::D, ModifierFlag::CONTROL_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::D, ModifierFlag::HYPER ,
            KeyCode::D, ModifierFlag::CONTROL_L
        </autogen>

    </item>


    <!--Hyper Application-->
    <item>
        <name>Hyper Application</name>
        <appendix></appendix>
        <appendix>E: Explore</appendix>
        <appendix><![CDATA[E  ↦ Google Chrome]]></appendix>
        <appendix><![CDATA[⌘E ↦ Finder]]></appendix>

        <appendix></appendix>
        <appendix>R: Run</appendix>
        <appendix><![CDATA[R  ↦ iTerm]]></appendix>
        <appendix><![CDATA[⌘R ↦ ^R (IDE-Run)]]></appendix>

        <appendix></appendix>
        <appendix>T: Text</appendix>
        <appendix><![CDATA[T  ↦ Sublime Text]]></appendix>
        <appendix><![CDATA[⌘T ↦ Typora]]></appendix>

        <appendix></appendix>
        <appendix>F: Find</appendix>
        <appendix><![CDATA[F  ↦ Dash]]></appendix>
        <appendix><![CDATA[⌘F ↦ Dictionary]]></appendix>

        <appendix></appendix>
        <appendix>G: Grand</appendix>
        <appendix><![CDATA[G  ↦ Intellij IDEA]]></appendix>
        <appendix><![CDATA[G  ↦ CLion]]></appendix>
        <identifier>private.hyper-application</identifier>

        <!--Define your own application here-->
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_Google_Chrome</name>
            <url type="file">/Applications/Google Chrome.app</url>
        </vkopenurldef>
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_iTerm</name>
            <url type="file">/Applications/iTerm.app</url>
        </vkopenurldef>
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_Sublime_Text</name>
            <url type="file">/Applications/Sublime Text.app</url>
        </vkopenurldef>
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_INTELLIJ_IDEA</name>
            <url type="file">/Applications/IntelliJ IDEA.app/</url>
        </vkopenurldef>
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_CLion</name>
            <url type="file">/Applications/CLion.app/</url>
        </vkopenurldef>
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_Dash</name>
            <url type="file">/Applications/Dash.app/</url>
        </vkopenurldef>
        <vkopenurldef>
            <name>KeyCode::VK_OPEN_URL_APP_Typora</name>
            <url type="file">/Applications/Typora.app</url>
        </vkopenurldef>

        <autogen>
            --KeyToKey--
            KeyCode::E, ModifierFlag::HYPER | ModifierFlag::COMMAND_L ,
            KeyCode::VK_OPEN_URL_APP_Finder
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::E, ModifierFlag::HYPER,
            KeyCode::VK_OPEN_URL_APP_Google_Chrome
        </autogen>

        <autogen>
            --KeyToKey--
            KeyCode::R, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::R, ModifierFlag::CONTROL_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::R, ModifierFlag::HYPER,
            KeyCode::VK_OPEN_URL_APP_iTerm
        </autogen>


        <autogen>
            --KeyToKey--
            KeyCode::T, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::VK_OPEN_URL_APP_Typora
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::T, ModifierFlag::HYPER,
            KeyCode::VK_OPEN_URL_APP_Sublime_Text
        </autogen>

        <autogen>
            --KeyToKey--
            KeyCode::F, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::VK_OPEN_URL_APP_Dictionary
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::F, ModifierFlag::HYPER,
            KeyCode::VK_OPEN_URL_APP_Dash
        </autogen>

        <autogen>
            --KeyToKey--
            KeyCode::G, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::VK_OPEN_URL_APP_CLion
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::G, ModifierFlag::HYPER,
            KeyCode::VK_OPEN_URL_APP_INTELLIJ_IDEA
        </autogen>

    </item>


    <!-- Hyper Functional-->
    <item>
        <name>Hyper Functional</name>
        <appendix>Maps F[N] to corresponding functionality</appendix>
        <appendix><![CDATA[F1  ↦  BrightnessDown]]></appendix>
        <appendix><![CDATA[F2  ↦  BrightnessUp]]></appendix>
        <appendix><![CDATA[F3  ↦  ExposeAll]]></appendix>
        <appendix><![CDATA[F4  ↦  LaunchPad]]></appendix>
        <appendix><![CDATA[F5  ↦  KeyboardLightDown]]></appendix>
        <appendix><![CDATA[F6  ↦  KeyboardLightUp]]></appendix>
        <appendix><![CDATA[F7  ↦  MusicPrev]]></appendix>
        <appendix><![CDATA[F8  ↦  MusicPlay]]></appendix>
        <appendix><![CDATA[F9  ↦  MusicNext]]></appendix>
        <appendix><![CDATA[F10 ↦  Mute]]></appendix>
        <appendix><![CDATA[F11 ↦  VolumeDown]]></appendix>
        <appendix><![CDATA[F12 ↦  VolumeUp]]></appendix>
        <appendix></appendix>
        <appendix>※Hint: Enable system settings: preference -> keyboard -> 'Use F1,F2,etc.. as standard function key'
        </appendix>
        <identifier>private.hyper-function</identifier>
        <!-- F1 -->
        <autogen>
            __KeyToKey__ KeyCode::F1, ModifierFlag::HYPER,
            ConsumerKeyCode::BRIGHTNESS_DOWN ,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- F2 -->
        <autogen>
            __KeyToKey__ KeyCode::F2, ModifierFlag::HYPER,
            ConsumerKeyCode::BRIGHTNESS_UP ,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- F3 -->
        <autogen>__KeyToKey__ KeyCode::F3, ModifierFlag::HYPER, KeyCode::EXPOSE_ALL</autogen>

        <!-- F4 -->
        <autogen>__KeyToKey__ KeyCode::F4, ModifierFlag::HYPER, KeyCode::LAUNCHPAD</autogen>

        <!-- F5 -->
        <autogen>
            __KeyToKey__ KeyCode::F5, ModifierFlag::HYPER,
            ConsumerKeyCode::KEYBOARDLIGHT_LOW ,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- F6 -->
        <autogen>
            __KeyToKey__ KeyCode::F6, ModifierFlag::HYPER,
            ConsumerKeyCode::KEYBOARDLIGHT_HIGH ,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- F7 -->
        <autogen>
            __KeyToKey__ KeyCode::F7, ModifierFlag::HYPER,
            ConsumerKeyCode::MUSIC_PREV
        </autogen>

        <!-- F8 -->
        <autogen>
            __KeyToKey__ KeyCode::F8, ModifierFlag::HYPER,
            ConsumerKeyCode::MUSIC_PLAY
        </autogen>

        <!-- F9 -->
        <autogen>
            __KeyToKey__ KeyCode::F9, ModifierFlag::HYPER,
            ConsumerKeyCode::MUSIC_NEXT
        </autogen>

        <!-- F10 -->
        <autogen>
            __KeyToKey__ KeyCode::F10, ModifierFlag::HYPER,
            ConsumerKeyCode::VOLUME_MUTE
        </autogen>

        <!-- F11 -->
        <autogen>
            __KeyToKey__ KeyCode::F11, ModifierFlag::HYPER,
            ConsumerKeyCode::VOLUME_DOWN,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- F12 -->
        <autogen>
            __KeyToKey__ KeyCode::F12, ModifierFlag::HYPER,
            ConsumerKeyCode::VOLUME_UP,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

    </item>


    <!-- Hyper Shifter-->
    <item>
        <name>Hyper Shifter</name>
        <appendix>Maps hyper numkeys, minus, equal to corresponding punctuation.</appendix>
        <appendix>[12...-=] ↦ ⇧[12...-=] '!@..._+'</appendix>

        <appendix></appendix>
        <appendix>Maps square bracket to round breacket.</appendix>
        <appendix>[ ↦ ⇧9 '('</appendix>
        <appendix>] ↦ ⇧0 ')'</appendix>

        <appendix></appendix>
        <appendix>Maps Hyper semicolon to low dash</appendix>
        <appendix>; ↦ ⇧- '_'</appendix>


        <identifier>private.hyper-shifter</identifier>

        <autogen>
            --KeyToKey--
            KeyCode::1, ModifierFlag::HYPER,
            KeyCode::1, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::2, ModifierFlag::HYPER,
            KeyCode::2, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::3, ModifierFlag::HYPER,
            KeyCode::3, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::4, ModifierFlag::HYPER,
            KeyCode::4, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::5, ModifierFlag::HYPER,
            KeyCode::5, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::6, ModifierFlag::HYPER,
            KeyCode::6, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::7, ModifierFlag::HYPER,
            KeyCode::7, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::8, ModifierFlag::HYPER,
            KeyCode::8, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::9, ModifierFlag::HYPER,
            KeyCode::9, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::0, ModifierFlag::HYPER,
            KeyCode::0, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::MINUS, ModifierFlag::HYPER,
            KeyCode::MINUS, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::EQUAL, ModifierFlag::HYPER,
            KeyCode::EQUAL, ModifierFlag::SHIFT_L
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::BRACKET_LEFT, ModifierFlag::HYPER,
            KeyCode::9 , ModifierFlag::SHIFT_R,
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::BRACKET_RIGHT, ModifierFlag::HYPER,
            KeyCode::0 , ModifierFlag::SHIFT_R,
        </autogen>

        <!-- SemiColon to Minus -->
        <autogen>
            --KeyToKey--
            KeyCode::SEMICOLON, ModifierFlag::HYPER,
            KeyCode::MINUS , ModifierFlag::SHIFT_R,
        </autogen>
    </item>


    <!-- Hyper Other -->
    <item>
        <name>Hyper Other</name>
        <appendix>Escape Hyper back to CapsLock</appendix>
        <appendix><![CDATA[⎋  ↦ ⇪    (CapsLock)]]></appendix>
        <appendix></appendix>
        <appendix>Hyper Space to Escape</appendix>
        <appendix><![CDATA[␢  ↦ ⎋    (Escape)]]></appendix>
        <appendix></appendix>
        <appendix><![CDATA[\  ↦ ⌃/   (Comment/Uncomment)]]></appendix>
        <appendix><![CDATA[`  ↦ ⌃⇧⌘4 (ScreenShot by area)]]></appendix>
        <appendix><![CDATA[⌘` ↦ ⌃⇧4  (ScreenShot by area to file)]]></appendix>
        <appendix><![CDATA['  ↦ =    (Quote to equal)]]></appendix>

        <identifier>private.hyper-other</identifier>

        <!-- Escape to Capslock-->
        <autogen>__KeyToKey__ KeyCode::ESCAPE, ModifierFlag::HYPER, KeyCode::CAPSLOCK</autogen>

        <!-- Space to Escape-->
        <autogen>
            --KeyToKey--
            KeyCode::SPACE, ModifierFlag::HYPER,
            KeyCode::ESCAPE
        </autogen>

        <!-- Slash to comment -->
        <autogen>
            --KeyToKey--
            KeyCode::SLASH, ModifierFlag::HYPER,
            KeyCode::SLASH, ModifierFlag::COMMAND_L
        </autogen>


        <!-- ` to area screenshot -->
        <autogen>
            --KeyToKey--
            KeyCode::BACKQUOTE, ModifierFlag::HYPER,
            KeyCode::4, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L | ModifierFlag::COMMAND_L
        </autogen>

        <!-- ⌘` to area screenshot to file -->
        <autogen>
            --KeyToKey--
            KeyCode::BACKQUOTE, ModifierFlag::HYPER | ModifierFlag::COMMAND_L,
            KeyCode::4, ModifierFlag::SHIFT_L | ModifierFlag::COMMAND_L
        </autogen>


        <!-- Quote to Equal -->
        <autogen>
            --KeyToKey--
            KeyCode::QUOTE, ModifierFlag::HYPER,
            KeyCode::EQUAL
        </autogen>


    </item>


    <!-- Hyper Special Control-->
    <item>
        <name>Hyper Special to fine grained functional keys</name>
        <appendix><![CDATA[Ins ↦ ⇧⌥F1  (Fine grained brightness down)]]></appendix>
        <appendix><![CDATA[Del ↦ ⇧⌥F2  (Fine grained brightness up)]]></appendix>
        <appendix><![CDATA[↘   ↦ ⇧⌥F5  (Fine grained keyboard light down)]]></appendix>
        <appendix><![CDATA[↖   ↦ ⇧⌥F6  (Fine grained keyboard light up)]]></appendix>
        <appendix><![CDATA[⇟   ↦ ⇧⌥F11 (Fine grained volume down)]]></appendix>
        <appendix><![CDATA[ ↦ ⇧⌥F12 (Fine grained volume up)]]></appendix>
        <appendix></appendix>
        <appendix><![CDATA[PrintScreen  ↦ ⌃⇧⌘3 (Save full screen to clipboard)]]></appendix>
        <appendix><![CDATA[PrintScreen ↦ ⌃⇧3 (Save full screen to file)]]></appendix>
        <appendix><![CDATA[ScrollLock   ↦ VolumeMute (Save full screen to clipboard)]]></appendix>
        <appendix><![CDATA[Pause        ↦ MusicPlay (Save full screen to clipboard)]]></appendix>


        <identifier>private.hyper-special</identifier>

        <!-- Brightness: Insert/Delete -->
        <autogen>
            __KeyToKey__ KeyCode::PC_INSERT, ModifierFlag::HYPER,
            ConsumerKeyCode::BRIGHTNESS_UP,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>
        <autogen>
            __KeyToKey__ KeyCode::PC_DEL, ModifierFlag::HYPER,
            ConsumerKeyCode::BRIGHTNESS_DOWN,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- Keyboard Light: Home/End -->
        <autogen>
            __KeyToKey__ KeyCode::HOME, ModifierFlag::HYPER,
            ConsumerKeyCode::KEYBOARDLIGHT_LOW,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>
        <autogen>
            __KeyToKey__ KeyCode::END, ModifierFlag::HYPER,
            ConsumerKeyCode::KEYBOARDLIGHT_HIGH,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- PgUp -->
        <autogen>
            __KeyToKey__ KeyCode::PAGEUP, ModifierFlag::HYPER,
            ConsumerKeyCode::VOLUME_UP,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>
        <autogen>
            __KeyToKey__ KeyCode::PAGEDOWN, ModifierFlag::HYPER,
            ConsumerKeyCode::VOLUME_DOWN,ModifierFlag::SHIFT_L | ModifierFlag::OPTION_L
        </autogen>

        <!-- PrintScreen & Hyper PrintScreen-->
        <autogen>
            __KeyToKey__ KeyCode::PC_PRINTSCREEN,
            KeyCode::3, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L | ModifierFlag::COMMAND_L
        </autogen>
        <autogen>
            __KeyToKey__ KeyCode::PC_PRINTSCREEN, ModifierFlag::HYPER,
            KeyCode::3, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L
        </autogen>

        <!--Scroll to mute -->
        <autogen>
            __KeyToKey__ KeyCode::PC_SCROLLLOCK, ModifierFlag::HYPER,
            ConsumerKeyCode::VOLUME_MUTE
        </autogen>

        <!--Pause to music_pley-->
        <autogen>
            __KeyToKey__ KeyCode::PC_PAUSE, ModifierFlag::HYPER,
            ConsumerKeyCode::MUSIC_PLAY
        </autogen>

    </item>


    <!-- Hyper Mouse key -->
    <item>
        <name>Hyper MouseKey</name>
        <appendix><![CDATA[↑ ↦ MouseUp]]></appendix>
        <appendix><![CDATA[↓ ↦ MouseDown]]></appendix>
        <appendix><![CDATA[← ↦ MouseLeft]]></appendix>
        <appendix><![CDATA[→ ↦ MouseRight]]></appendix>
        <appendix><![CDATA[↩ ↦ MouseLButton]]></appendix>
        <appendix><![CDATA[\ ↦ MouseRButton]]></appendix>
        <identifier>private.hyper-mousekey</identifier>


        <autogen>
            --KeyToKey--
            KeyCode::CURSOR_UP, ModifierFlag::HYPER,
            KeyCode::VK_MOUSEKEY_UP
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::CURSOR_DOWN, ModifierFlag::HYPER,
            KeyCode::VK_MOUSEKEY_DOWN
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::CURSOR_LEFT, ModifierFlag::HYPER,
            KeyCode::VK_MOUSEKEY_LEFT
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::CURSOR_RIGHT, ModifierFlag::HYPER,
            KeyCode::VK_MOUSEKEY_RIGHT
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::RETURN, ModifierFlag::HYPER,
            KeyCode::VK_MOUSEKEY_BUTTON_LEFT
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::BACKSLASH, ModifierFlag::HYPER,
            KeyCode::VK_MOUSEKEY_BUTTON_RIGHT
        </autogen>
    </item>

</root>

Win版本脚本

CapsLock(⊞) 这个是两年前写的,不过功能大体上是差不多的。

;=====================================================================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}~{F6}  | 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_Next                    ;|
;                    CapsLock + F6  |  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_Next}                                   ;|
CapsLock & F6:: 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
Contact GitHub API Training Shop Blog About

FAQ

  • Q: Why using as symbol of hyper key?

A:Cause asterisk have the ascii code 42, which is the answer to life, the universe, and everything! while itself has meaning 'star'.  (Heavy-Asterisk) is a pretty version of *(Asterisk). Actually I would choose

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章