如何将 L-click 绑定到按键绑定,但仅限于不打字时(在 AHK 中)?

如何将 L-click 绑定到按键绑定,但仅限于不打字时(在 AHK 中)?

我完全是 AHK 新手。我最近才发现通过将 L-click 绑定到键盘键来点击的乐趣。我将其绑定到我的字母“D”键,但是我遇到了一个本应很明显的问题,现在根本无法输入字母“D”。我使用的脚本只是:

D::L按钮

每当我尝试输入“D”时,它只会点击鼠标所在的位置。

有没有办法将 L 单击绑定到我的 D 键,但是不是在输入字段中按“D”时触发(例如 URL 栏,或双击 Google 表格中的单元格时,或按 Enter 在视频游戏中输入时等)?我基本上希望能够在输入字段获得焦点时输入“D”,同时能够在输入字段未获得焦点时使用“D”左键单击(即触发脚本)。

如果有人能提供一些建议,我将不胜感激。谢谢

答案1

AHK v1:

#If 指令创建上下文相关的热键和热字符串:

#Requires AutoHotkey v1.1

#If (A_Cursor != "IBeam") ; the mouse pointer is not in text input mode

    d::LButton
    
#If

AHK v2:

#HotIf 指令创建上下文相关的热键和热字符串:

#Requires AutoHotkey v2.0

#HotIf (A_Cursor != "IBeam")

    d::LButton
    
#HotIf

答案2

AutoHotKey 无法检测程序中的活动重点元素,因为这对于所有应用程序来说非常困难,甚至不可能。此外,它完全超出了 AHK 项目的范围。

您有两个选择;您可以检测活动窗口,然后可能只有您的热键,或者通常这就是为什么热键要求您按住前缀键(例如 ctrl、左 alt 或右 alt)的原因,因为这些键与现有的键使用方式不冲突。

您可以使用以下方法获取活动窗口的标题https://www.autohotkey.com/docs/v1/lib/WinGetActiveTitle.htm

答案3

我认为这不可能。无论你是否处于“打字模式”,键盘都在寻找输入。

似乎有一些方法可以检测某个键是否被快速连续按下: https://www.autohotkey.com/board/topic/103198-fast-way-to-detect-double-key-presses/ 您可以更改脚本来查看是否D快速按两次。

或者您可以更改为D使用一个或多个修饰键,如ctrlaltWinshift

相关内容