1

In this script the Numpad1 does nothing to move the mouse pointer when pressed, but Numpad2 works as expected moving the mouse. Why doesn't Numpad1 work to move the mouse?

Thanks

FastMouseSpeed := 1
MouseDistance := 500
LongMouseSteps := 12

Numpad1::
Loop{
    If GetKeyState("Numpad1","P"){
        MouseMove, LongMouseSteps * -1,  LongMouseSteps,  FastMouseSpeed, R
    }else{
        break
    }
}   
return

Numpad2::
Loop{
    If GetKeyState("Numpad2","P"){
        MouseMove, 0, 12, FastMouseSpeed, R
    }else{
        break
    }
}   
return

I have tried to use a bunch of different syntaxes using % but none have worked. eg

MouseMove, % LongMouseSteps * -1,  %LongMouseSteps%,  %FastMouseSpeed%, R

PS: Full updated mostly working script (except that I can't seem to stop a mousemove command by issuing a new one with Shift-Numpad# (eg NumpadUp then NumpadDown):

    SetNumLockState, AlwaysOn

LoopCount := 0

;   *** Begin normal numpads
FastMouseSpeed := 1
LongMouseSteps := 18
; LongMouseSteps does not seem to work for me in the MouseMove calls

Numpad1::
While GetKeyState("Numpad1","P")
    MouseMove, -LongMouseSteps, LongMouseSteps, FastMouseSpeed, R
return

Numpad2::
while GetKeyState("Numpad2","P")
    MouseMove, 0, LongMouseSteps, FastMouseSpeed, R     
return

Numpad3::
While GetKeyState("Numpad3","P")
    MouseMove, LongMouseSteps, LongMouseSteps, FastMouseSpeed, R            
return

Numpad4::
While GetKeyState("Numpad4","P")
    MouseMove, -LongMouseSteps, 0, FastMouseSpeed, R    
return

Numpad5:: ;if the mouse is moving then stop it, else left-click
if(LoopCount != 0){
    LoopCount := 100000
}else{
    Click
}
return

Numpad6::
While GetKeyState("Numpad6","P")
    MouseMove, LongMouseSteps, 0, FastMouseSpeed, R
return

Numpad7::
While GetKeyState("Numpad7","P")
    MouseMove, -LongMouseSteps, -LongMouseSteps, FastMouseSpeed, R
return

Numpad8::
While GetKeyState("Numpad8","P")
    MouseMove, 0, -LongMouseSteps, FastMouseSpeed, R
return

Numpad9::
While GetKeyState("Numpad9","P")
    MouseMove, LongMouseSteps, -LongMouseSteps, FastMouseSpeed, R
return

; *** END normal numpads

; *** BEDGIN SHIFT NUMPADS
SlowMouseSpeed := 50
MoveSleep := 100 ; amount of time to sleep between slow mouse moves

NumpadIns:: 
MouseMove, 960, 575, 0 ; center pointer on PC and right click
    Click, right
return

NumpadClear::
    LoopCount := 10000 ; used to exit loops for slow mouse movement
return

NumpadEnd::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, -1, 1, SlowMouseSpeed , R;
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

NumpadDown::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, 0, 1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
    Sleep, MoveSleep 
return

NumpadPgDn::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, 1, 1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

NumpadLeft::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, -1, 0, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

NumpadRight::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, 1, 0, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

NumpadHome::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, -1, -1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

NumpadUp::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, 0, -1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

NumpadPgUp::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, MoveSleep    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, 1, -1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, MoveSleep 
    }
    LoopCount := 0
return

; ***  END SHIFT NUMPADS




; *** Begin Control numpads  
; For radial menus - move mouse as with normal numpads
; but then click and return

*^Numpad1::
MouseMove,   -150,  150,  0,   R
Click
MouseMove,    150, -150,  0,   R
return

*^Numpad2::
MouseMove,   0,  200,  0,   R
Click
MouseMove,   0, -200,  0,   R
return

*^Numpad3::
MouseMove,   150,  150,  0,   R
Click
MouseMove,  -150, -150,  0,   R
return

*^Numpad4::
MouseMove,   -200, 0,  0,   R
Click
MouseMove,    200, 0,  0,   R
return

*^Numpad5::
Click, right
return

*^Numpad6::
MouseMove, 200, 0,  0,   R
Click
MouseMove, -200, 0,  0,   R
return

*^Numpad7::
MouseMove,   -150, -150,  0,   R
Click
MouseMove,    150,  150,  0,   R
return

*^Numpad8::
MouseMove,   0, -200,  0,   R
Click
MouseMove,   0,  200,  0,   R
return

*^Numpad9::
MouseMove,   150, -150,  0,   R
Click
MouseMove,  -150,  150,  0,   R
return
; *** End control numpads

; *** begin ALt numpads
; used for camera controls
AltSleepTime := 50

*!Numpad2::
loop 5
{
    Send  {Down down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep, AltSleepTime  
}
Send {Down up} 
return

*!Numpad3::
loop 20
{
    Send  {PgDn down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep, AltSleepTime  
}
Send {PgDn up} 
return

*!Numpad4::
loop 20
{
    Send  {Left down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep AltSleepTime  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {Left up} 
return

*!Numpad6::
loop 20
{
    Send  {Right down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep AltSleepTime  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {Right up}  
return

!Numpad8::
loop 20
{
    Send  {Up down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep AltSleepTime  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {Up up} 
return

!Numpad9::
loop 20
{
    Send  {PgUp down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep AltSleepTime  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {PgUp up} 
return
; end ALT numpads

;  end of file
lost baby
  • 3,178
  • 4
  • 32
  • 53
  • 1
    Both `NumPad1` variations work for me. I'm using v1.1.30.03 for reference. I also added a `Sleep , 100` in the loop so I could see it work. – EJE Sep 06 '19 at 13:24
  • Same version here, I'm on Win10Pro Version 10.0.17134 Build 17134. – lost baby Sep 06 '19 at 13:49

1 Answers1

1

Works here.

Shortened version:

FastMouseSpeed := 1
MouseDistance := 500
LongMouseSteps := 12

Numpad1::
While GetKeyState("Numpad1","P")
    MouseMove, -LongMouseSteps,  LongMouseSteps,  FastMouseSpeed, R
return

Numpad2::
While GetKeyState("Numpad2","P")
    MouseMove, 0, 12, FastMouseSpeed, R
return

EDIT:

This should work:

SetNumLockState, AlwaysOn

LoopCount := 0
FastMouseSpeed := 1
LongMouseSteps := 18
SlowMouseSpeed := 50
MoveSleep := 100 ; amount of time to sleep between slow mouse moves
AltSleepTime := 50

;   *** Begin normal numpads

Numpad1::
While GetKeyState("Numpad1","P")
    MouseMove, -LongMouseSteps, LongMouseSteps, FastMouseSpeed, R
return

Numpad2::
while GetKeyState("Numpad2","P")
    MouseMove, 0, LongMouseSteps, FastMouseSpeed, R
return

Numpad3::
While GetKeyState("Numpad3","P")
    MouseMove, LongMouseSteps, LongMouseSteps, FastMouseSpeed, R
return

Numpad4::
While GetKeyState("Numpad4","P")
    MouseMove, -LongMouseSteps, 0, FastMouseSpeed, R
return

Numpad5:: ;if the mouse is moving then stop it, else left-click
if(LoopCount != 0){
    LoopCount := 100000
}else{
    Click
}
return

Numpad6::
While GetKeyState("Numpad6","P")
    MouseMove, LongMouseSteps, 0, FastMouseSpeed, R
return

Numpad7::
While GetKeyState("Numpad7","P")
    MouseMove, -LongMouseSteps, -LongMouseSteps, FastMouseSpeed, R
return

Numpad8::
While GetKeyState("Numpad8","P")
    MouseMove, 0, -LongMouseSteps, FastMouseSpeed, R
return

Numpad9::
While GetKeyState("Numpad9","P")
    MouseMove, LongMouseSteps, -LongMouseSteps, FastMouseSpeed, R
return

; *** END normal numpads

; *** BEDGIN SHIFT NUMPADS

NumpadIns:: 
MouseMove, 960, 575, 0 ; center pointer on PC and right click
    Click, right
return

NumpadClear::
    LoopCount := 10000 ; used to exit loops for slow mouse movement
return

NumpadEnd::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, -1, 1, SlowMouseSpeed , R;
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

NumpadDown::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, 0, 1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
    Sleep, %MoveSleep% 
return

NumpadPgDn::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, 1, 1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

NumpadLeft::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, -1, 0, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

NumpadRight::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, 1, 0, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

NumpadHome::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, -1, -1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

NumpadUp::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 200 {
        MouseMove, 0, -1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

NumpadPgUp::
    if (LoopCount > 0) {
        LoopCount := 10000
        Sleep, %MoveSleep%    
    }
    LoopCount := 0
    while LoopCount < 150 {
        MouseMove, 1, -1, SlowMouseSpeed , R
        LoopCount := LoopCount +1
        Sleep, %MoveSleep% 
    }
    LoopCount := 0
return

; ***  END SHIFT NUMPADS


; *** Begin Control numpads  
; For radial menus - move mouse as with normal numpads
; but then click and return

*^Numpad1::
MouseMove,   -150,  150,  0,   R
Click
MouseMove,    150, -150,  0,   R
return

*^Numpad2::
MouseMove,   0,  200,  0,   R
Click
MouseMove,   0, -200,  0,   R
return

*^Numpad3::
MouseMove,   150,  150,  0,   R
Click
MouseMove,  -150, -150,  0,   R
return

*^Numpad4::
MouseMove,   -200, 0,  0,   R
Click
MouseMove,    200, 0,  0,   R
return

*^Numpad5::
Click, right
return

*^Numpad6::
MouseMove, 200, 0,  0,   R
Click
MouseMove, -200, 0,  0,   R
return

*^Numpad7::
MouseMove,   -150, -150,  0,   R
Click
MouseMove,    150,  150,  0,   R
return

*^Numpad8::
MouseMove,   0, -200,  0,   R
Click
MouseMove,   0,  200,  0,   R
return

*^Numpad9::
MouseMove,   150, -150,  0,   R
Click
MouseMove,  -150,  150,  0,   R
return
; *** End control numpads

; *** begin ALt numpads
; used for camera controls

*!Numpad2::
loop 5
{
    Send  {Down down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep, %AltSleepTime%
}
Send {Down up} 
return

*!Numpad3::
loop 20
{
    Send  {PgDn down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep, %AltSleepTime%  
}
Send {PgDn up} 
return

*!Numpad4::
loop 20
{
    Send  {Left down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep %AltSleepTime%  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {Left up} 
return

*!Numpad6::
loop 20
{
    Send  {Right down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep %AltSleepTime%  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {Right up}  
return

!Numpad8::
loop 20
{
    Send  {Up down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep %AltSleepTime%  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {Up up} 
return

!Numpad9::
loop 20
{
    Send  {PgUp down}  ; Auto-repeat consists of consecutive down-events (with no up-events).
    Sleep %AltSleepTime%  ; The number of milliseconds between keystrokes (or use SetKeyDelay).
}
Send {PgUp up} 
return
; end ALT numpads

;  end of file
user3419297
  • 9,537
  • 2
  • 15
  • 24
  • What happens if you try another key instead of Numpad1? – user3419297 Sep 06 '19 at 14:29
  • For other keys the same problem happens, kills those keys dead. I also tried your code with NumpadEnd (without the LongMouseSteps variable) and then mouse just kept moving until I managed to kill the script. Is there no Up state for NumpadEnd? – lost baby Sep 06 '19 at 14:47
  • NumpadEnd is working for me, too. Could it be that you're using the script in a game? – user3419297 Sep 06 '19 at 14:57
  • That is the goal but even outside the game it has the same problem. – lost baby Sep 06 '19 at 15:02
  • Try to run the script as administrator by adding [**this**](https://stackoverflow.com/a/43299069/3419297) to the auto-execute section. – user3419297 Sep 06 '19 at 15:10
  • There is something else in the script creating a confict. I also have Shift-Numpad1, Ctrl-Numpad1 and Alt-Numpad1. How they can mess the variable up I don't know. – lost baby Sep 06 '19 at 15:20
  • Then try the above code in a stand alone-script (close all other scripts). If it works add step by step the other hotkeys and see what happens. – user3419297 Sep 06 '19 at 15:23
  • Thanks all, the script now works - see updated question but i must admit I don't know why. – lost baby Sep 06 '19 at 15:37
  • The version I posed in my question works, I presume yours does too. Can you see why my original did not work? I suspect some weird runtime thing that has little to do with any error in my script. What I did is cut my normal numpad stuff and paste it into a new file, compile and run it and it worked, then I copied it back into the original script and it worked there too. – lost baby Sep 08 '19 at 21:22
  • 1
    All the variables have to be defined in the auto-execute section (top of the script) and the variables in the sleep command have to be enclosed in percent signs, otherwise the script works not precicely as far tested. – user3419297 Sep 08 '19 at 22:24