如何在AutoHotkey v2中将CapsLock映射为Esc与Ctrl键?
Windows下用AutoHotkey v2实现CapsLock双功能映射
以下是实现单独按松CapsLock触发Escape,按住CapsLock作为Ctrl修饰键的AutoHotkey v2脚本方案:
核心脚本代码
#Requires AutoHotkey v2.0 ; 禁用原生CapsLock切换大小写功能 CapsLock::Return ; 单独按松CapsLock时发送Escape ~CapsLock Up:: { ; 检测是否仅按下了CapsLock(无其他组合键) if (A_PriorKey = "CapsLock") { Send "{Esc}" } } ; 定义CapsLock作为Ctrl与各类按键的组合映射 ~CapsLock & *a::Send "^a" ~CapsLock & *b::Send "^b" ~CapsLock & *c::Send "^c" ~CapsLock & *d::Send "^d" ~CapsLock & *e::Send "^e" ~CapsLock & *f::Send "^f" ~CapsLock & *g::Send "^g" ~CapsLock & *h::Send "^h" ~CapsLock & *i::Send "^i" ~CapsLock & *j::Send "^j" ~CapsLock & *k::Send "^k" ~CapsLock & *l::Send "^l" ~CapsLock & *m::Send "^m" ~CapsLock & *n::Send "^n" ~CapsLock & *o::Send "^o" ~CapsLock & *p::Send "^p" ~CapsLock & *q::Send "^q" ~CapsLock & *r::Send "^r" ~CapsLock & *s::Send "^s" ~CapsLock & *t::Send "^t" ~CapsLock & *u::Send "^u" ~CapsLock & *v::Send "^v" ~CapsLock & *w::Send "^w" ~CapsLock & *x::Send "^x" ~CapsLock & *y::Send "^y" ~CapsLock & *z::Send "^z" ~CapsLock & *0::Send "^0" ~CapsLock & *1::Send "^1" ~CapsLock & *2::Send "^2" ~CapsLock & *3::Send "^3" ~CapsLock & *4::Send "^4" ~CapsLock & *5::Send "^5" ~CapsLock & *6::Send "^6" ~CapsLock & *7::Send "^7" ~CapsLock & *8::Send "^8" ~CapsLock & *9::Send "^9" ~CapsLock & *F1::Send "^F1" ~CapsLock & *F2::Send "^F2" ~CapsLock & *F3::Send "^F3" ~CapsLock & *F4::Send "^F4" ~CapsLock & *F5::Send "^F5" ~CapsLock & *F6::Send "^F6" ~CapsLock & *F7::Send "^F7" ~CapsLock & *F8::Send "^F8" ~CapsLock & *F9::Send "^F9" ~CapsLock & *F10::Send "^F10" ~CapsLock & *F11::Send "^F11" ~CapsLock & *F12::Send "^F12" ~CapsLock & *Tab::Send "^Tab" ~CapsLock & *Enter::Send "^Enter" ~CapsLock & *Backspace::Send "^Backspace" ~CapsLock & *Delete::Send "^Delete" ~CapsLock & *Insert::Send "^Insert" ~CapsLock & *Home::Send "^Home" ~CapsLock & *End::Send "^End" ~CapsLock & *PgUp::Send "^PgUp" ~CapsLock & *PgDn::Send "^PgDn" ~CapsLock & *Left::Send "^Left" ~CapsLock & *Right::Send "^Right" ~CapsLock & *Up::Send "^Up" ~CapsLock & *Down::Send "^Down" ~CapsLock & *Space::Send "^Space" ~CapsLock & *`::Send "^`" ~CapsLock & *-::Send "^-" ~CapsLock & *=::Send "^=" ~CapsLock & *[::Send "^[" ~CapsLock & *]::Send "^]" ~CapsLock & *\::Send "^\" ~CapsLock & *;::Send "^;" ~CapsLock & *'::Send "^'" ~CapsLock & *,::Send "^," ~CapsLock & *.::Send "^." ~CapsLock & */::Send "^/"
代码说明
#Requires AutoHotkey v2.0:强制脚本在v2环境运行,避免版本兼容问题。CapsLock::Return:关闭原生CapsLock的大小写切换功能,防止干扰新映射。~CapsLock Up:::监听CapsLock松开事件,~保留按键的原始状态检测能力;通过A_PriorKey判断是否为单独按键,若是则发送Escape。~CapsLock & *[按键]::Send "^[按键]":定义CapsLock与任意按键的组合,等效于Ctrl+对应按键;*允许同时搭配Shift/Alt等其他修饰键,覆盖更多使用场景。
使用步骤
- 安装AutoHotkey v2:从官方渠道下载并安装v2版本。
- 创建脚本:新建文本文件,粘贴上述代码,保存为后缀为
.ahk的文件(例如CapsLockRemap.ahk)。 - 运行脚本:双击
.ahk文件,托盘出现AutoHotkey图标表示脚本已生效。 - 开机自启:将脚本的快捷方式放入
C:\Users\[你的用户名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup文件夹,实现开机自动运行。
注意事项
- 停止脚本:右键点击托盘的AutoHotkey图标,选择“Exit”即可终止运行。
- 冲突处理:若某软件的快捷键与映射冲突,可直接删除脚本中对应按键的映射行。
- 简化写法:如果不需要全量按键映射,可只保留常用的组合键(如
^c/^v/^a等),减少脚本长度。
内容的提问来源于stack exchange,提问作者Zeta.Investigator
相关产品推荐
相关产品推荐

