AutoHotkey按住键的同时运行脚本

时间:2017-03-13 12:48:39

标签: autohotkey

我需要一个脚本的帮助,我希望它只在我按住一个键的同时运行。继承剧本:

;If you use this, you have to use absolute screen coordinates.
CoordMode, Mouse, Screen

;Suppose a 100x100 px bounding box for your game inventory.
;Eg., from (500, 500) to (600, 600)
#if GetKeyState("joy5")
joy5:: MouseMove, 1771, 531
joy5 Up::MouseMove %oldx%,%oldy%
Numpad8::
{
    ;Get current Mouse coords
    MouseGetPos, xCurrent ,yCurrent

    ;Calculate future Mouse coords
    xMoved := xCurrent
    yMoved := yCurrent - 35

    ;Check if the future mouse postion will be
    ;below the top border of your bounding box, 
    ;aka still inside it, after it has moved.
    ;If so, proceed and move the mouse,
    ;otherwise do nothing.
MouseGetPos, CoordXRec, CoordYRec
        MouseMove, xMoved, yMoved


if(yMoved < 503 && yMoved > 350 && yMoved > 360){
MouseMove 1846, 166
}
if(yMoved < 145){
MouseMove, %CoordXRec%, %CoordYRec%, 0
}
if(yMoved < 718 && yMoved < 720 && yMoved > 680){
MouseMove 1771, 671
}
return  
}
Numpad5::
{
    ;Get current Mouse coords
    MouseGetPos, xCurrent ,yCurrent

    ;Calculate future Mouse coords
    xMoved := xCurrent
    yMoved := yCurrent +35

    ;Check if the future mouse postion will be
    ;below the top border of your bounding box, 
    ;aka still inside it, after it has moved.
    ;If so, proceed and move the mouse,
    ;otherwise do nothing.

        MouseMove, xMoved, yMoved

if(yMoved > 285 && yMoved < 360){
MouseMove 1773, 526
}
if(yMoved > 697 && yMoved < 715){
MouseMove 1772, 736
}
return
}
Numpad4::
{
    ;Get current Mouse coords
    MouseGetPos, xCurrent ,yCurrent

    ;Calculate future Mouse coords
    xMoved := xCurrent -40
    yMoved := yCurrent 

    ;Check if the future mouse postion will be
    ;below the top border of your bounding box, 
    ;aka still inside it, after it has moved.
    ;If so, proceed and move the mouse,
    ;otherwise do nothing.
    if (xMoved > 1740) {
        MouseMove, xMoved, yMoved
    }
return  
}
Numpad6::
{
    ;Get current Mouse coords
    MouseGetPos, xCurrent ,yCurrent

    ;Calculate future Mouse coords
    xMoved := xCurrent +40
    yMoved := yCurrent 

    ;Check if the future mouse postion will be
    ;below the top border of your bounding box, 
    ;aka still inside it, after it has moved.
    ;If so, proceed and move the mouse,
    ;otherwise do nothing.
    if (xMoved < 1917) {
        MouseMove, xMoved, yMoved
    }
return  
}

基本上你用WASD控制鼠标,还有一些其他功能,但我想做到这一点,你必须按住一个键才能移动。谢谢!

仅在按住某个键时移动。

2 个答案:

答案 0 :(得分:0)

按下Number-Pad-8并打开NumLock时,将鼠标移动到500,500。释放钥匙时将鼠标返回原位。

Numpad8::move()
Numpad8 UP::unmove()

move()
{
  global oldx,oldy
  MouseGetPos oldx,oldy
  MouseMove 500,500
}

unmove()
{
  global oldx,oldy
  MouseMove %oldx%,%oldy%
}

答案 1 :(得分:0)

要回答您的原始问题(如果问题发生了如此剧烈的变化,请打开另一个并完成此问题):

您可以使用map - 命令动态地取消/启用热键。假设您的masterkey是 Space

>>> list(map(lambda x : 0 if isinstance(x,np.ma.core.MaskedConstant) else 1 , mylist))

[1,1,1,0,0]