【问题标题】:code that active keyboard keys with the mouse position使用鼠标位置激活键盘键的代码
【发布时间】:2021-04-10 12:03:30
【问题描述】:

我想编写一个脚本,无论我的鼠标向左移动它都处于活动状态并保持 A,而当我的鼠标向右移动时它处于活动状态并保持 D,我是 AutoHotkey 的新手,所以我不知道如何要做到这一点,' 我做了这个脚本,但我不知道它是否有效

Esc::ExitApp
Loop, 99999999999
{
MouseGetPos
if (x < 683)
Send A
} else if (x > 683) {
Send D
}
Return

【问题讨论】:

  • 您能否澄清一下“我的鼠标向左移动并保持 A”的意思?如果您的鼠标位于屏幕的左半部分,您是否希望程序按住“A”而右半部分为“D”?
  • 是的,如果鼠标位于屏幕的左半部分,我希望程序按住 A,而右半部分则按住 D

标签: autohotkey


【解决方案1】:

这个脚本应该做你想做的事。不过有几个关键点:

  • Loop, 99999999999:如果你想要一个无限循环,只需使用Loop,不需要额外的参数。
  • MouseGetPos:如果要跟踪鼠标位置,首先需要提供一个变量,用于存储 x/y 坐标。在这种情况下,为了与您的其余代码保持一致,我选择使用 MouseGetPos, x 将 x 坐标存储为变量 x 以与您的其余代码保持一致。
  • Send:来自section of the Docs about holding down keys

按住或释放键:用大括号括住键的名称,后跟单词 Down 或 Up。例如:

Send {b down}{b up} 
Send {TAB down}{TAB up} 
Send {Up down}  ;Press down the up-arrow key. 
Sleep 1000  ; Keep it down for one second. 
Send {Up up}  ; Release the up-arrow key. 

最终代码:

Loop
    {
    MouseGetPos, x
    if (x < 683){
        Send {a down}
        while(x < 683){
            MouseGetPos, x
            Sleep 1
        }
        Send {a up}
    }
     else if (x > 683) {
        Send {d down}
        while(x > 683){
            MouseGetPos, x
            Sleep 1
        }
        Send {d up}
    }
}
Return
Esc::ExitApp

如果它不能按照您的意愿工作,请询问它不能正常工作的原因,我很乐意进行修改。

【讨论】:

  • 天啊,谢谢你的帮助!
  • 如果它解决了您的问题,您能否将其标记为解决方案? @Adryanzoivermei
  • 另外,只是出于好奇,你在用什么程序/游戏?
猜你喜欢
  • 2013-08-16
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 2017-09-14
  • 2012-09-21
相关资源
最近更新 更多