将光标恢复到首次触发热键时的位置?

将光标恢复到首次触发热键时的位置?

我尝试将光标垂直向下移动,直到到达显示器底部(1500),然后将其移回初始位置并环绕。

我遇到的问题是,每次触发滚轮向下时,MouseGetPos 也会重新评估。

我可以尝试在脚本首次运行时评估 MouseGetPos,但它仍然不准确,因为脚本可能运行了一个小时才会触发滚轮向下动作。

这是我迄今为止的代码,谢谢!

WheelDown:: 
MouseGetPos, xpos1, ypos1
xpos2 := xpos1
ypos2 := ypos1

MouseMove, % xpos2 +0, % ypos2 +90


if (ypos2 > 1500)
MouseMove, %xpos1%, %ypos1%
Return

esc::ExitApp 

答案1

可能还有其他方法,但最简单的答案可能是明确定义要滚动回的“初始位置”。 一种方法是在调用时监视按键状态WheelDown::

例如 cursor_looping.ahk

esc::ExitApp

WheelDown::

    MouseGetPos, xpos, ypos

    ; True or False
    marker_key_is_down := GetKeyState("F7")
    reset_key_is_down := GetKeyState("F4")

    ; Set a static y position
    if (marker_key_is_down)
        {
        initial_y_position := ypos
        }

    ; Return to "indefinite" scrolling
    if (reset_key_is_down)
        {
        initial_y_position :=
        }

    MouseMove, % xpos +0, % ypos +90

    if (ypos > 1500)
        MouseMove, %xpos%, %initial_y_position%

Return

简而言之,使用上面的示例脚本,如果您按下 egF7然后用鼠标滚轮向下滚动一次,鼠标的原始位置将存储在 中initial_y_position。此值是持久的。它不会被覆盖,除非您执行以下操作:

  • 再次按下F7并向下滚动可设置新位置(无需清除先前的位置)。

  • 按下 egF4并向下滚动可返回默认行为(即,无论滚动多长时间,鼠标都会停留在屏幕底部)。

  • 关闭脚本。

注意事项

  • 虽然我认为 F 键/向下滚动方法非常直观,但请记住它确实会在每次滚动时运行。您需要F7在第一次滚动后释放鼠标,才能正常工作(假设您的鼠标已经位于y您想要的位置)。

  • 要清除某个位置,请记住您需要按下 ex.F4并向下滚动至少一次。在这种情况下,多次滚动不会造成任何损害。

  • GetKeyState()仅适用于单个键,因此您要监控的键的选择可能会受到限制。

  • ypos > 1500非常重要。这会影响脚本的运行方式。例如,如果 Windows 正在放大您的桌面,1920x1080 分辨率实际上可能只提供 150% 大小的 ~800 像素滚动距离,以使换行正常工作(例如ypos > 800不是ypos > 1080)。在这种情况下,滚动到 1080 是不可能的,因此永远不会触发此部分。


参考

相关内容