关于keywait疑惑 Topic is solved

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

XMB-7
Posts: 18
Joined: 08 Jan 2023, 20:58
Contact:

关于keywait疑惑

20 Apr 2023, 00:53

Code: Select all

Control::
{
    if KeyWait('Control')
        ToolTip('test')
}
```
对这段测试代码, 我的理解是, 第一次按下ctrl, 松开ctrl时触发执行KeyWait('Control'), 开始等待第二次键击, 然后等第二次按下ctrl后, 才会显示出文本test.
但测试的实际行为是, 第一次按下并松开ctrl时, 就已经弹出显示框了, 根本不会等待第二次键击ctrl, 请问这是怎么回事?
WKen
Posts: 200
Joined: 21 Feb 2023, 00:01

Re: 关于keywait疑惑

20 Apr 2023, 10:44

按下时就会触发

Code: Select all

~Control::
{
    if KeyWait('Control')
        ToolTip('test')
}
猜测你想区分单击和双击?
viewtopic.php?p=361191#p361191
XMB-7
Posts: 18
Joined: 08 Jan 2023, 20:58
Contact:

Re: 关于keywait疑惑

20 Apr 2023, 11:07

我是想区分单击和双击, 看了官方文档上的例子, 再实际简单测试了一下, 发现这个代码的执行逻辑好像有问题啊.
我预期的功能是, 按一次ctrl无响应, 按两次ctrl弹出提示框显示test, 但实际行为是按一次ctrl直接就弹出提示框了.
把control改成~control并不解决问题, 这个只是把识别ctrl释放改成识别ctrl按下了.
WKen
Posts: 200
Joined: 21 Feb 2023, 00:01

Re: 关于keywait疑惑

20 Apr 2023, 12:00

那只是为了说明

Code: Select all

~Ctrl:: ; Catch a double 按下CTRL时
{
 If (A_PriorHotKey = A_ThisHotkey && A_TimeSincePriorHotkey < 400) ; CTRL was pressed twice CTRL按下了两次
     ToolTip('test')
 Sleep 0
 KeyWait "Ctrl" ; Wait for CTRL to be released 等待释放CTRL
 Return
}
XMB-7
Posts: 18
Joined: 08 Jan 2023, 20:58
Contact:

Re: 关于keywait疑惑

20 Apr 2023, 20:51

你还是没理解我意思, 我不是想知道怎么用keywait实现单双击设置, 毕竟官方文档上都有例子, 而且上面也说了更推荐使用settimer来实现, 我是想知道keywait的执行逻辑是什么.
我刚刚发现一个新例子, 这个例子可能更有代表性.

Code: Select all

~Control::
{
    if KeyWait('Alt')
        ToolTip('test')
}
明明需要等待alt, 但是按ctrl就显示test, 亦即keywait似乎永远返回true, 像是个bug.
WKen
Posts: 200
Joined: 21 Feb 2023, 00:01

Re: 关于keywait疑惑

21 Apr 2023, 09:12

不,if KeyWait('Alt')不是等待按下Alt键,而是等待Alt键处于松开状态

Code: Select all

Control Up::
{
    if KeyWait('Alt', "D")   ; 等待按下Alt键
        ToolTip('test')
}
XMB-7
Posts: 18
Joined: 08 Jan 2023, 20:58
Contact:

Re: 关于keywait疑惑  Topic is solved

21 Apr 2023, 10:12

懂了, 原来跟触发alt up的机制不一样, 只要alt没被按下过, 就一直是keywait('alt')=true. 我刚刚还在想, 不先按下alt怎么松开alt啊, 突然就反应过来咋回事了. 感谢.

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 10 guests