自动热键检查 Ctrl 按下错误

Autohotkey check for Ctrl pressed error

我最近才重新开始使用 AHK,在中断了几年之后,如果对此有一个非常简单的答案,请原谅我。

我正在编写一个脚本,在按住控制键时跟踪按键,然后允许 9 个热键之一与 2 个按键一起使用,这样按两次 Q 将激活 1-1 热键,W 然后 Q将激活 1-2 热键等

我的问题是,使用 LControl 的热键检查是否按下 Control 会阻止 LControl 发送到系统,因此 Ctrl+A 之类的东西不再起作用。

我能想到的唯一解决方案是只将 Q W 和 E 映射为热键一次,每个热键中都有一堆逻辑。

我有更好的方法吗?

LControl:: Set:=4
LControl Up:: Set:=0

#If (Set=4)
{
    q:: Set:=1
    w:: Set:=2
    e:: Set:=3
}

#If (Set=1)
{
    q:: SendEvent Different Words Here
    w:: SendEvent Different Words Here
    e:: SendEvent Different Words Here
}

#If (Set=2)
{
    q:: SendEvent Different Words Here
    w:: SendEvent Different Words Here
    e:: SendEvent Different Words Here
}

#If (Set=3)
{
    q:: SendEvent Different Words Here
    w:: SendEvent Different Words Here
    e:: SendEvent Different Words Here
}

基本上,如何停止 LControl:: 阻止向系统发送 Ctrl。

想通了。

LControl:: ;if ctrl is pressed
Set:=4 ;enter first selection group
SendEvent {Ctrl Down} ;don't interrupt normal hotkeys
Return

LControl Up:: ;if ctrl is released
Set:=0 ;"unbind" q/w/e hotkeys
SendEvent {Ctrl Up} ;and inform the system
Return

#If (Set=4)
{
    ^q:: Set:=1
    ^w:: Set:=2
    ^e:: Set:=3
}