Caps Lock 中的 AutoHotKey Ctrl 无法与 Shift 配合使用

Caps Lock 中的 AutoHotKey Ctrl 无法与 Shift 配合使用

我的手指不大,也不能用手掌按 ctrl 键。由于我使用 ctrl 作为许多热键,因此我不得不将其重新映射到 capslock 按钮。我使用注册表方法交换 ctrl 和 caps 可以很好地适应它,但现在我需要共享此键盘进行结对编程。我遇到的主要问题是我不能再将 ctrl-shift- 快捷键与 Capslock 按钮一起使用。这是我的自动热键脚本。

+Space::Send _
#InstallKeybdHook
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
 if GetKeyState("CapsLock", "T") = 1
 {
   SetCapsLockState, off
 }
 else if GetKeyState("CapsLock", "F") = 0
 {
   SetCapsLockState, on
 }
}
return

请注意,我还有一行用于移位空格以发送下划线。我不知道如何设置它以覆盖所有可能的漏洞。我非常感谢任何有关优化此脚本的意见。

答案1

感谢 #ahk 的 +Dymn 帮助我解决这个问题,并与我一起解决所有错误。我们遇到的一些缺陷是 Ctrl+Shift+ 仅在 Ctrl 是第一个按下的键时才有效,Capslock 不断切换 CAPS,即使它不是第一个按下的键,即使在之前或之后按下了另一个键,等等。我已经测试过它,它似乎更加强大,没有明显的错误。

#InstallKeybdHook
+Space::Send _
CapsLock::
#UseHook On
Send {LControl Down}
KeyWait,CapsLock
Send {LControl Up}
KeyWait, CapsLock
IF (A_PriorKey = "CapsLock") {
  IF GetKeyState("CapsLock", "T") = 1 {
    SetCapsLockState, OFF
  }
  Else If GetKeyState("CapsLock", "F") = 0 {
    SetCapsLockState, ON
  }
}
Return
+CapsLock::
Send {LControl Down}
KeyWait,CapsLock
Send {LControl Up}
Return
#UseHook OFF

这个脚本对我来说非常有价值。我只是希望其他人也能像我一样觉得它有用。

相关内容