键盘上的大写锁定键(Caps Lock)占据了显眼的位置,但其默认功能并不常用。通过使用一个简单的 AutoHotkey 脚本,我们可以将 Caps Lock 键转换为一个修饰键,从而实现各种可自定义的快捷操作。
基础用法
例如,借助此脚本,你可以通过按下 Caps Lock + G 的组合键,在 Windows 的任何位置快速搜索选中的文本;或者按下 Caps Lock + D,查询某个单词的词典定义。这些快捷方式完全可以根据个人偏好进行调整。
更巧妙的是,这个脚本并不会完全禁用 Caps Lock 的原有功能。你仍然可以通过快速双击 Caps Lock 键来切换大小写锁定状态。否则,Caps Lock 键将作为快捷键的修饰键使用,与其他键组合实现特定操作。
AutoHotkey 简介
AutoHotkey 是一款免费的 Windows 应用程序,它在后台运行,并执行用户编写的脚本。你可以自己编写脚本,或者从网上下载。这些脚本通常会监听特定的按键组合,并执行相应的操作。AutoHotkey 提供了一种快速便捷的方式,让你重新映射键盘按键,或者为按键分配新的功能。
我们之前就展示过如何使用 AutoHotkey 来禁用 Windows 键,防止它在游戏中意外弹出开始菜单,无需物理拆卸键帽。
安装 AutoHotkey 并获取脚本
首先,下载 AutoHotkey 并完成安装。 接着,下载 Caps Lock 修改器脚本。
从压缩文件中提取 AHK 脚本文件,并将其保存在你电脑的任意文件夹中。要运行脚本,请右键点击该脚本文件,并选择“运行脚本”。
脚本将在后台运行。如果需要切换 Caps Lock 的大小写锁定状态,快速双击 Caps Lock 键即可。
如果没有双击,Caps Lock 将仅作为修饰键。脚本内置了一些快捷方式,在 Windows 的任何位置都可以使用:
- 按 Caps Lock + d,查找所选单词的词典定义。
- 按 Caps Lock + g,用 Google 搜索选中的文本。
- 按 Caps Lock + t,在同义词词典中查找所选单词。
- 按 Caps Lock + w,在维基百科上搜索选中的文本。
想要更多快捷方式?你可以通过学习 AutoHotkey 脚本的编写,创建自己的快捷操作。
要管理 AutoHotkey,可以在系统托盘中找到 AutoHotkey 的图标,其特征是绿色背景上的白色“H”字母。要停止运行脚本,右键单击该图标,并选择“退出”。
脚本的工作原理
如果你想了解脚本的具体工作方式,可以右键点击脚本文件,并选择“编辑脚本”。这会在记事本中打开脚本,方便你查看代码。该脚本结构简洁,易于理解。我们建议你不要在没有查看和理解代码的情况下,下载并运行任何来路不明的脚本。
这个脚本由 Dave Kellog 提供。关键代码段如下,它使得 Caps Lock 在双击时可以作为切换键:
CapsLock:: KeyWait, CapsLock ; 等待 CapsLock 键释放 KeyWait, CapsLock, D T0.2 ; 如果 0.2 秒内 CapsLock 没有按下,ErrorLevel = 1 if ((ErrorLevel = 0) && (A_PriorKey = "CapsLock") ) ; 判断是否为双击 { SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On" ; 切换 CapsLock LED 的状态 } return
这段代码监听 Caps Lock 键是否被双击,并切换 Caps Lock 的状态。否则,脚本会捕获 Caps Lock 键,并将其用于修饰符快捷键。
脚本的其余部分包含快捷操作和一个剪贴板功能,用于保存和恢复剪贴板的内容。这部分至关重要,因为修饰符函数需要使用剪贴板来操作选中的文本。
想要在不下载的情况下查看完整的脚本吗? 这是完整的代码:
#NoEnv ; 建议用于提高性能和与未来 AutoHotkey 版本的兼容性。 ; #Warn ; 启用警告以帮助检测常见错误。 #SingleInstance FORCE ; 跳过调用对话框并默默地替换先前执行的脚本实例。 SendMode Input ; 由于其卓越的速度和可靠性,建议用于新脚本。 SetWorkingDir %A_ScriptDir% ; 确保一致的起始目录。 ;================================================================================================ ; CapsLock 处理。 必须双击 CapsLock 才能打开或关闭 CapsLock 模式。 ;================================================================================================ ; 必须双击 CapsLock 才能打开或关闭 CapsLock 模式。 CapsLock:: KeyWait, CapsLock ; 等待 CapsLock 键释放 KeyWait, CapsLock, D T0.2 ; 如果 0.2 秒内 CapsLock 没有按下,ErrorLevel = 1 if ((ErrorLevel = 0) && (A_PriorKey = "CapsLock") ) ; 判断是否为双击 { SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On" ; 切换 CapsLock LED 的状态 } return ;================================================================================================ ; 带有 CapsLock 修饰符的热键。 请参阅 https://autohotkey.com/docs/Hotkeys.htm#combo ;================================================================================================ ; 获取所选单词的定义。 CapsLock & d:: ClipboardGet() Run, http://www.google.com/search?q=define+%clipboard% ; 使用剪贴板的内容启动 ClipboardRestore() Return ; GOOGLE 选择的文本。 CapsLock & g:: ClipboardGet() Run, http://www.google.com/search?q=%clipboard% ; 使用剪贴板的内容启动 ClipboardRestore() Return ; 执行所选单词的 THESAURUS CapsLock & t:: ClipboardGet() Run http://www.thesaurus.com/browse/%Clipboard% ; 使用剪贴板的内容启动 ClipboardRestore() Return ; 执行所选单词的 WIKIPEDIA CapsLock & w:: ClipboardGet() Run, https://en.wikipedia.org/wiki/%clipboard% ; 使用剪贴板的内容启动 ClipboardRestore() Return ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;================================================================================================ ; 剪贴板辅助功能。 ;================================================================================================ ClipboardGet() { OldClipboard:= ClipboardAll ; 保存现有的剪贴板。 Clipboard:= "" Send, ^c ; 将选定的测试复制到剪贴板 ClipWait 0 If ErrorLevel { MsgBox, 没有选择文本! Return } } ClipboardRestore() { Clipboard:= OldClipboard }
之前我们见过使用 AutoHotkey 脚本将 Caps Lock 改为修饰键,但从未见过一个脚本能像这样,把 Caps Lock 作为切换键,只需双击即可实现。这个脚本非常巧妙。再次感谢 Dave Kellog 将其分享给我们。