首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoHotKey如果键按下,而win11 TaskView是打开语法

AutoHotKey如果键按下,而win11 TaskView是打开语法
EN

Stack Overflow用户
提问于 2022-04-05 03:30:07
回答 1查看 143关注 0票数 0

最近我一直在使用Gnome 41.5,并且爱上了活动菜单的工作方式,所以我尝试使用AHK创建一个脚本,当我按下窗口键打开任务视图时,如果任务视图是打开的,然后我开始键入,(搜索一个应用程序),我希望AHK打开“开始”菜单,这样我就可以利用它的搜索功能-我想象它在下面的工作方式-我一直在努力学习,但被困在这里。

代码语言:javascript
复制
Lwin::
Send, #{Tab}
if (""taskview is open"" + ""any char pressed"") {
Send, Rctrl + Esc
}

在未来,我希望开始按钮只出现在任务视图屏幕上,这样它就像Gnome一样

EN

回答 1

Stack Overflow用户

发布于 2022-09-09 23:53:15

我想做同样的事情,到目前为止,我喜欢这个tbh的工作方式,但是您可能也想添加RWin (我没有,所以我没有)

在任务视图出现之前,“开始”菜单很快就会闪烁,但是激活时间使快捷键在不打开任务视图的情况下工作,所以这是一个很好的权衡。

代码语言:javascript
复制
;couldn't check these names bc the names are different based on system language
;double click on the script in the task tray and hit CTRL+K to figure out the correct name
taskView := "Task View"     ;these 2 names are guesses
search := "Search"

;----------------------------------------------------------------------
;Hotkey function hotkeys have to be created first
Hotkey, ~*LButton, mousedown, off
Hotkey, ~*RButton, mousedown, off
Hotkey, ~*MButton, mousedown, off

Hotkey, ~LWin, showTask

;checks every half second if you're in task view to activate the key logging
SetTimer, taskInput, 500 
return

showTask:
    ;prevent repeats
    keywait, LWin
    ;cancel if a different key got pressed while win was held down
    if (A_PriorKey != "LWin") {
        return
    }

    if WinActive(taskView){
        sleep 1
        send {Esc}
        return
    }

    else send #{tab}

taskInput:
    if (!WinActive(taskView)){
        return
    }

    Mouse_Flag = 0
    Hotkey, ~*LButton, on
    Hotkey, ~*RButton, on
    Hotkey, ~*MButton, on

    ;wait for any key
    Input, key, L1 V, {VK0E}{LWin}{RWin}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Pause} ;excluded: {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{CapsLock}{NumLock}{PrintScreen}{Left}{Right}{Up}{Down}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}
    
    if WinActive(taskView){ 
        if (key = LWin) { 
            keywait, LWin
            sleep 1
            send {Esc}
        }
        else if (Mouse_Flag || key = Chr(27)) { ;chr 27 = blank space character, matches some characters specified in the any key input check, notably Esc
            ;nothing/return
        }
        else {
            ;open search
            send #s
            WinWaitActive %search%
            if("LWin" != A_PriorKey && key != A_PriorKey){ ;slight fix if you type very fast and the letters get jumbled bc winwaitactive takes too long
                send {BS}
                send {%key%}
                send {%A_PriorKey%}
            }
            else send {%key%}
        }
    }
    Hotkey, ~*LButton, off
    Hotkey, ~*RButton, off
    Hotkey, ~*MButton, off
Return

mousedown:
    Mouse_Flag = 1
    sendevent, {Blind}{VK0E} ;unused virtual key
return
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71746011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档