Autohotkey - 当鼠标触摸屏幕边缘两次时发送按键?

时间:2014-03-26 19:20:05

标签: autohotkey

我需要一个可以执行此脚本正在执行的操作的脚本:

~Escape:: If (A_ThisHotkey=A_PriorHotkey && A_TimeSincePriorHotkey<250) Send !{F4} return

当快速按两次Esc键时,此脚本会发送Alt + F4。

我需要一个脚本,当鼠标在不到一秒的时间内触摸屏幕的右边缘两次时,该脚本可以发送击键。如果鼠标只触摸边缘一次就不会发生任何事情。

有人知道这是否可以用autohotkey实现?

1 个答案:

答案 0 :(得分:1)

我写了一个应该回答你问题的脚本。每10毫秒,我们得到鼠标的位置。如果它在边缘并且现在已经离开它,我们将其视为“点击”并开始1秒计时器(1000毫秒,代码中的实际参数为负,因为我们希望它只运行一次)。每次点击也会将taps递增1,因此我们可以跟踪有多少个点按。在1秒计时器结束时,我们看到用户是否已经轻敲屏幕边缘两次。如果是这样,请发送Alt-F4击键!

;; by default ahk gets mouse coordinates relative to the active
;; window, this sets it to use absolute coordinates
CoordMode, Mouse, Screen

;; how often to get the mouse position in milliseconds
UPDATE_INTERVAL := 10
RIGHT_EDGE      := A_ScreenWidth - 1

;; make the script run forever
#Persistent
SetTimer, WatchCursor, %UPDATE_INTERVAL%
return

WatchCursor:
    MouseGetPos, xpos
    ;; a tap is defined by touching and leaving the edge,
    ;; we don't want to count holding the mouse at the edge
    ;; as a tap
    if (prev = RIGHT_EDGE && xpos != RIGHT_EDGE) {
        taps += 1
        ; negative time means run once
        SetTimer, EdgeTimer, -1000
    }
    prev := xpos
return

EdgeTimer:
    ;; more than 2 taps are ignored
    if (taps = 2) {
        Send !{F4}
    }
    taps := 0
return