AutoHotKey:检测Firefox的keycombo中的单键释放

时间:2017-06-07 12:06:50

标签: firefox keyboard-shortcuts autohotkey

尝试在AutoHotKey的帮助下配置组合键 Alt + Tab 在Firefox中表现为tab switcher

#IfWinActive Showcase
    LAlt & Tab::Send {tab}
    GetKeyState, state, LAlt
    if state = U
        Send {enter}

基本上,这会阻止 Alt + Tab 打开Windows的普通窗口切换器,并在按下 Tab 时循环打开选项卡。但是,由于我正在尝试模拟Windows'窗口切换器的行为,我还想要调出 - Send {enter} - Left Alt 发布时最后选择的选项卡。而我似乎无法完成,因为GetKeyState只是不会回应,即使state变为U。在这种情况下如何检测密钥释放?


添加:
所以我最终得到了以下代码,主要部分完成了我想要的代码:



    #IfWinActive ahk_exe firefox.exe  ; Alt+Tab to Windows
        LAlt & tab::
        Send {F10}  ; F10 brings up Showcase in my FF installation
        WinWaitActive Showcase
        GetKeyState, state, LAlt, P
            if state = U
                WinClose Showcase
        IfWinNotActive Showcase
            Send {LWin}
    #IfWinActive Showcase  ; Alt+Tab over Firefox’s tabs
        LAlt & tab::
        Send {tab}
        SetTimer, choice, -50
        return
        choice:  ; Thanks, @user3419297!
            KeyWait, LAlt, P
            IfWinActive Showcase
                Send {LAlt up} {space}
        return
    #IfWinActive ahk_exe firefox.exe  ; Win+Tab over Firefox’s tabs
        LWin::F10
    #IfWinActive Showcase  ; Win+Tab to Windows
        tab::return
        LWin & tab::
        WinClose Showcase
        WinWaitClose Showcase
        WinMinimize ahk_exe firefox.exe
        Send {LWin down} {tab} {LWin up}
    return
    ExitApp


这实际上模拟了 Alt +& Firefox中的 Win + Tab 行为,我通常在全屏模式下使用:

  • 在按住 Alt 的同时按 Tab 将以相同的方式循环打开标签 Alt + Tab 循环窗口
  • 从FF退出到Windows,快速推送和释放 Alt + Tab ;这将打开开始菜单,从那里可以使用 Alt + Tab 正常方式
  • Win + Tab 在Windows中的工作方式略有不同,其方式是不需要按住 Win 熬夜,并且(至少在Windows 10中)不能通过 Tab 在窗口中循环;通过推送 Win + Tab (实际上只是 Win 就足够了,但是为了保持一致,我也同样地模拟这两种方式); Tab 也被阻止,因此它无法循环,以模拟真实 Win + Tab 在Windows中的工作方式
  • 离开Firefox的 Win + Tab 到Windows,再次推送所说的组合 - 这将带来正常的 Win Windows 10的+ Tab ;任务栏也可以通过这种方式轻松访问

由于之前我不知道任何AutoHotKey,回头看这可能是一个有点过分的任务。然而,这确实迫使我实际学习如何在AHK中编程,同时粉碎了我的整体编程技巧。为此,这一直很好。我经常发现自己在Firefox中本能地推送 Alt + Tab 来循环切换标签,就像用Windows一样,只是提醒一下这实际上只适用于Windows中的Windows 。直到最近,那是:)

1 个答案:

答案 0 :(得分:1)

#IfWinActive Showcase

    LAlt & Tab:: 
        Send {Tab}
        SetTimer Send_Enter, -50
    return

#IfWinActive     ; turn off context sensitivity

Send_Enter:
    KeyWait, LAlt, L
    Send {Alt Up}{Enter}
return