如何将Alt映射为Ctrl、LWin映射为Alt、Ctrl映射为LWin且保留Ctrl+C原有功能
按键重映射需求实现方案
失效原因
你的两种写法失效的核心原因是AutoHotkey默认会优先应用全局重映射规则来解析热键的修饰符:当你将Control映射为LWin后,脚本中^修饰符默认对应映射后的Control(也就是物理Alt键),自然无法匹配你按物理Control+C的操作,最终只会触发LWin+C的系统快捷功能。
正确可运行脚本
#InputLevel 0 ; 捕获物理Ctrl+C,直接触发复制功能 $^c::SendInput ^c #InputLevel 1 ; 核心按键重映射规则 Alt::Control LWin::Alt Control::LWin
如果只需要保留左Ctrl的复制功能,把上面的^c改成<^c即可。
实现逻辑说明
#InputLevel用于控制输入事件的响应优先级:- Level 0的热键只会捕获物理键盘的原生输入,不会响应脚本自身发送的模拟按键,因此可以精准拦截物理
Control+C的操作,直接发送复制指令。 - Level 1的重映射事件优先级低于Level 0的热键,因此物理
Control+C的操作会先被热键拦截处理,不会触发后续的Control→LWin重映射。
- Level 0的热键只会捕获物理键盘的原生输入,不会响应脚本自身发送的模拟按键,因此可以精准拦截物理
$修饰符用于避免脚本自身发送的^c重复触发热键,造成循环调用。
内容的提问来源于stack exchange,提问作者Jason Lee
相关产品推荐
相关产品推荐

