如何将按键完美绑定到鼠标左键?

如何将按键完美绑定到鼠标左键?

我对 AutoHotkey 还很陌生,我想知道是否可以将键盘上的按键与鼠标左键一一绑定?比如,如果我按住分配给左键单击的键,它会保持,就像我用鼠标左键按住/拖动它一样?如果我松开它,它也会释放。此外,除了 AutoHotkey 之外还有其他方法可以做到这一点吗?

例子:

c::
MouseClick, Left

但是,如果我单击并按住,C它会开始快速重复左键单击,而不是只要我按住它就会按住C

任何帮助是极大的赞赏。

答案1

按照 @Plox 给出的内容,可以满足该帖子一半的要求,如果我们意识到其c:: MouseClick left,,,,, D工作原理与以下机制相同,则可以阐明更多内容:

c::
MouseClick left,,,,, D
return

此处的 AHK 引擎触发 MouseDown,退出该线程并再次挂接到用户输入等待另一个操作,也就是说,如果该键仍然被按住,则当 AHK 意识到触发它的热键仍然被按下时,它将无限地进入相同的例程。

可以采用以下两种缓解方法之一:

  • 您选择让 AHK 保持忙碌状态直到发布相同的凯:

      c::
      MouseClick left,,,,, D
      Keywait, c, U
      MouseClick left,,,,, U
      return
    
  • 或者您可以选择让 AHK 解释器在同一例程之外保持自由,通过保留一个全局变量keybound来禁止在键尚未释放的情况下再次旋转到相同的操作。

      #HotkeyInterval 0
    
      keybound:=0
    
      c::
      if keybound
      return
      keybound:=1
      MouseClick left,,,,, D
      return
    
      c Up::
      MouseClick left,,,,, U
      keybound:=0
      return 
    
      #HotkeyInterval 2000  ; Reset to default value
    

HotkeyInterval是否关闭某些阈值以防止不必要的警告。

答案2

MouseClick 主要用于单击某个位置,并且大多看起来像这样

MouseClick, left, 55, 233

当您使用下面的代码时它仍然有效

c:: MouseClick, Left

当你按下 C 键时,它会点击,但是如果你按住 C 键,它会不断地点击,你可以通过使用单击、向下来解决此问题,如下所示

c:: Click, down

现在,当按下 C 键时,它将单击一次并按住它,同时按下 C 键,就像鼠标按钮一样激活

有关鼠标点击如何与 AHK 配合使用的更多信息这里。

答案3

这是我的脚本,运行良好:

$*space::
    ;  SetKeyDelay -1
      click down
      ; keywait, %A_ThisHotkey%
      ; keywait, CapsLock
      keywait, space 
    ;  Send {Blind}{lbutton DownTemp}
return

*$space up::  
  click up
return

相关内容