php 鼠标 复制粘贴,鼠标选中复制,中键粘贴脚本

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:47   1534   0

;Auto copy clipboard

~Lshift::

TimeButtonDown = %A_TickCount%

; Wait for it to be released

Loop

{

Sleep 10

GetKeyState, LshiftState, Lshift, P

if LshiftState = U ; Button has been released.

break

elapsed = %A_TickCount%

elapsed -= %TimeButtonDown%

if elapsed > 200 ; Button was held down long enough

{

x0 = A_CaretX

y0 = A_CaretY

Loop

{

Sleep 20 ; yield time to others

GetKeyState keystate, Lshift

IfEqual keystate, U, {

x = A_CaretX

y = A_CaretY

break

}

}

if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5)

{ ; Caret has moved

clip0 := ClipBoardAll ; save old clipboard

;ClipBoard =

Send ^c ; selection -> clipboard

ClipWait 1, 1 ; restore clipboard if no data

IfEqual ClipBoard,, SetEnv ClipBoard, %clip0%

}

return

}

}

~LButton::

MouseGetPos, xx

TimeButtonDown = %A_TickCount%

; Wait for it to be released

Loop

{

Sleep 10

GetKeyState, LButtonState, LButton, P

if LButtonState = U ; Button has been released.

{

If WinActive("Crimson Editor") and (xx < 25) ; Single Click in the Selection Area of CE

{

Send, ^c

return

}

break

}

elapsed = %A_TickCount%

elapsed -= %TimeButtonDown%

if elapsed > 200 ; Button was held down too long, so assume it's not a double-click.

{

MouseGetPos x0, y0 ; save start mouse position

Loop

{

Sleep 20 ; yield time to others

GetKeyState keystate, LButton

IfEqual keystate, U, {

MouseGetPos x, y ; position when button released

break

}

}

if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5)

{ ; mouse has moved

clip0 := ClipBoardAll ; save old clipboard

;ClipBoard =

Send ^c ; selection -> clipboard

ClipWait 1, 1 ; restore clipboard if no data

IfEqual ClipBoard,, SetEnv ClipBoard, %clip0%

}

return

}

}

; Otherwise, button was released quickly enough. Wait to see if it's a double-click:

TimeButtonUp = %A_TickCount%

Loop

{

Sleep 10

GetKeyState, LButtonState, LButton, P

if LButtonState = D ; Button has been pressed down again.

break

elapsed = %A_TickCount%

elapsed -= %TimeButtonUp%

if elapsed > 350 ; No click has occurred within the allowed time, so assume it's not a double-click.

return

}

;Button pressed down again, it's at least a double-click

TimeButtonUp2 = %A_TickCount%

Loop

{

Sleep 10

GetKeyState, LButtonState2, LButton, P

if LButtonState2 = U ; Button has been released a 2nd time, let's see if it's a tripple-click.

break

}

;Button released a 2nd time

TimeButtonUp3 = %A_TickCount%

Loop

{

Sleep 10

GetKeyState, LButtonState3, LButton, P

if LButtonState3 = D ; Button has been pressed down a 3rd time.

break

elapsed = %A_TickCount%

elapsed -= %TimeButtonUp%

if elapsed > 350 ; No click has occurred within the allowed time, so assume it's not a tripple-click.

{ ;Double-click

Send, ^c

return

}

}

;Tripple-click:

Sleep, 100

Send, ^c

return

~^a::Send, ^c ;Ctl+A = Select All, then Copy

~mbutton::

WinGetClass cos_class, A

;; emacs does pasting on middleclick by itself

if (cos_class <> "Emacs")

SendInput ^v

return

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP