Something like this could work:
Begin Text Compare : [{STATE_LISTENING}] Equals '1'
Set Boolean [~lastListeningState] to True
Else
Set Boolean [~lastListeningState] to False
End Condition
Start Loop While : [1] Equals [1]
Begin Device State Check : Mouse Y (Screen) Is Greater Than 1070
Begin Date Compare : [~timeAtOffPosition] Has Been Set
Begin Date Compare : [~timeAtOffPosition] Is Less Than Current Date/Time
Begin Boolean Compare : [~lastListeningState] Equals True
Stop VoiceAttack listening
Set Boolean [~lastListeningState] to False
End Condition
End Condition
Else
Set date [~timeAtOffPosition] to [~timeAtOffPosition] plus [500] milliseconds
Set date [~timeAtOnPosition] value to [Not Set]
End Condition
Else
Begin Date Compare : [~timeAtOnPosition] Has Been Set
Begin Date Compare : [~timeAtOnPosition] Is Less Than Current Date/Time
Begin Boolean Compare : [~lastListeningState] Equals False
Start VoiceAttack listening
Set Boolean [~lastListeningState] to True
End Condition
End Condition
Else
Set date [~timeAtOnPosition] to [~timeAtOnPosition] plus [500] milliseconds
Set date [~timeAtOffPosition] value to [Not Set]
End Condition
End Condition
End Loop
First, the current listening state is checked, and stored into a boolean variable. This should be more efficient to run in a loop, as the only other alternative is to use a token, which would need to be re-parsed every iteration.
This state is intentionally not re-checked, enabling you to toggle listening on either machine by other means, and having it stay that way until you move the cursor into or out of the "parking" zone.
The loop checks a boolean variable named "1" against itself, thus producing an infinite loop (make sure to check the "Evaluate 'Not Set' as false" option).
The cursor position is checked only for vertical position (if the cursor can only transition while on a specific screen of your PC, you'll want to add a check for the the horizontal as well); Adjust this value depending on the size of either screen (if the cursor is consistently "parked" at the very bottom, you don't need the 10 pixel margin), and invert it for the one that'll be below the other
E.G.
Begin Device State Check : Mouse Y (Screen) Is Less Than 10
for the laptop
I also added a time delay. The example is configured so that the cursor must be at the bottom edge of the screen for at least 500ms before listening is toggled, to avoid toggling each time the cursor just happens to touch the bottom edge.
As with any VoiceAttack command, this will stop if you switch profiles, or all commands are stopped.