Autohotkey检查Ctrl按下错误

时间:2015-02-05 10:36:53

标签: keypress autohotkey blocking

我最近才在休息几年后才重新使用AHK,所以请原谅我,如果有一个非常简单的答案。

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

我的问题是检查是否使用LControl的热键阻止控制将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发送到系统。

1 个答案:

答案 0 :(得分:0)

想出来。

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
}