【问题标题】:Autohotkey check for Ctrl pressed error自动热键检查 Ctrl 按下错误
【发布时间】:2015-02-05 10:36:52
【问题描述】:

在休息了几年后,我最近才重新开始使用 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。

【问题讨论】:

    标签: keypress autohotkey blocking


    【解决方案1】:

    想通了。

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-10
      • 2021-02-25
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多