代码之家  ›  专栏  ›  技术社区  ›  Shayan

针对winkey之后的任何可能的热键组合执行任务

  •  1
  • Shayan  · 技术社区  · 7 年前

    我希望以LWin开始的任何可能的键序列执行特定任务,例如:

    LWin & a::
    ;Execute the task
    

    或:

    LWin & b::
    ;Execute the task
    

    等等

    当然,对于所有的键盘键来说,写这些都是不可能的,所以我想到了这样的事情:

    LWin & *::     ; * = KEY
    KEY = %A_ThisHotkey%    ; KEY is now = LWin & a (for example)
    KEY := RegExReplace(Clipboard,"i)^lwIN & ")    ; KEY is now = a
    ; The task that needs to be executed:
    Send {LWin UP}
    Send {%KEY% DOWN}
    KeyWait %KEY%
    Send {%KEY% up}
    return
    

    但问题是,通配符不能这样使用。如何做到这一点?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Joe Coder    7 年前
    *LWin::
        Input, key, L1
        if (ErrorLevel = "NewInput")
            Send, {LWin}      ; LWin was pressed alone: pass-thru
        else if (IsLabel(key))
            Goto, % key
        else
            Send, % "#" key   ; pass-thru
    return
    *LWin UP::Input           ; stop listening for secondary key
    
    ; Tasks defined here
    s:
        MsgBox, "s" task launched!
    return
    p:
        MsgBox, "p" task launched!
    return