我已经成功使用 AHK 脚本近一年了,它将 Ctrl-C 和 Alt-ESV(Excel 快捷方式)映射到 Win 组合键,并将 Ctrl-Del 映射到 Ctrl-Space、Ctrl--(删除行)。
但是,偶尔(而且越来越频繁),计算机会认为 Win 或 Ctrl 键仍被按住。我花了很长时间寻找解决方法,但都无济于事,包括重写各种脚本以及卸载并重新安装 AHK。
这是我的脚本:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
;map ctrl-c, ctrl-v, and ctrl-e-s-v (paste values) to win-key combos
#a::Send ^c
#s::Send ^v
#q::Send !e,{s},{v}{Enter}
*CapsLock::Send {Media_Play_Pause}
Return ;disable CapsLock permanently
;map win-x to ctrl-alt-/ - shortcut to open 'everything.exe', then close it automatically when it's not in focus
#x::
Send ^!/
Sleep, 1000
WinWaitNotActive, ahk_class EVERYTHING
WinClose, ahk_class EVERYTHING
return
;win-z to prt scn
#z::Send {PrintScreen}
;map ctrl-del to select whole line and delete it
~^Del::
Send +{space}
Send ^-
Send {Left}
return
编辑:这个人遇到了和我一样的问题,但该线程中建议的修复方法都对我不起作用。
答案1
无法确定这是否能解决问题,但您可以尝试这个脚本。
; Always run your script as admin
if not A_IsAdmin
{
Run *RunAs "%A_ScriptFullPath%" ; Requires v1.0.92.01+
ExitApp
}
#SingleInstance, Force
#NoEnv
SetBatchLines, -1
SetKeyDelay, 50
;There's a command for disabling CapsLock permanently
SetCapsLockState, AlwaysOff
return
$#a::^c
$#s::^v
$#z::PrintScreen
$#q::SendEvent, ^!v!v{Enter}
$#x::
Send ^!/
Sleep, 1000
WinWaitNotActive, ahk_class EVERYTHING
WinClose, ahk_class EVERYTHING
return
$~^Del::SendEvent, +{space}^-{Left}
测试了所有 rempa(win+x 除外),它们似乎运行良好。我无法重现您遇到的修饰符问题。
请告诉我这是否解决了问题。如果没有,我们可以尝试调整火力。