21 July, 2013

AutoHotkey Scripts: Multiple clipboards . Get the last content of clipboard with Ctrl+B

Press "Ctrl+B" to access the last content of the clipboard, press "Ctrl+V" to get what's in the clipboard presently. Link to AutoHotkey forum.


Last line in the code allows that the old clipboard can be accessed also by "Left Windows key + Left Ctrl"

AutoHotkey_L should be installed for Unicode support (to preserve characters like ą,ę,ż,ü in non-English languages).



▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌

ClipNew := clipboard
OnClipboardChange:
ClipOld := ClipNew
ClipNew := clipboard
^b:: SendInput %ClipOld%
LWin & LCtrl:: SendInput %ClipOld%
▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌


This script below remembers up to ten past clipboard contents.
To paste past clipboards press and hold the left Windows key and press multiple times the Space key to access the past clips. Clipboards contents will be shown in a tooltip (clipped to a particular length). Release of both keys will paste the old clipboard content.

Similarly, holding the left Shift key and pressing multiple times the space key will show past clipboards contents in a tooltip (clipped) without pasting.

Pressing the left Ctrl key and the Space key will show all 10 old clipboards in a tooltip (clipped) for as long as the mouse is over the tooltip.

 Clipboard's length is shown in brackets.


▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌


;*********************** Old Clipboard **********************************
toggle=1
ClipNew := clipboard
ClipOld11 := "Ø"
ClipOld :=" "
number_of_clips=11

OnClipboardChange:
if (toggle=0) {
return
}else if RegExMatch(clipboard, "mi)<html>|<body>|<title>|vlc-record|<title>|<!--|</div>"){
return
; }else if (StrLen(clipboard)>2000){
; return
}else{
  if (ClipOld1 == clipboard OR  clipboard == ClipNew)
return

ClipOld10 := ClipOld9
ClipOld9 := ClipOld8
ClipOld8 := ClipOld7
ClipOld7 := ClipOld6
ClipOld6 := ClipOld5
ClipOld5 := ClipOld4
ClipOld4 := ClipOld3
ClipOld3 := ClipOld2
ClipOld2 := ClipOld1

/*

Loop %number_of_clips% {
step := number_of_clips - A_Index
if (step<=1)
break
prev:= step - 1
if (Clip_Old%step% != Clip_Old%prev%){
Clip_Old%step% := Clip_Old%prev%
}
}
*/

ClipOld1 := ClipNew
ClipOld:=ClipOld1

ClipNew := clipboard

}
return

LWin & LCtrl:: SendInput %ClipOld%

;_________________________________________ LWin & Space::


LWin & Space:: ; Send, ^v
index=1
CoordMode,ToolTip,Screen

Clip1 := SubStr(clipboard, 1, 100) "`n" SubStr(clipboard, 101, 100) "`n" SubStr(clipboard, 201, 100) "`n" SubStr(clipboard, 301, 100) "`n" SubStr(clipboard, 401, 100)
Clip1 := RegExReplace(Clip1, "`n`n","")

if (StrLen(clipboard)<=70){
ToolTip, % "Clipboard ("StrLen(clipboard ) " long) `n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯`n" Clip1 "`n ̢"
}else

ToolTip, % "Clipboard ("StrLen(clipboard ) " long) `n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯`n" Clip1 "`n ̢" ,500, 330
KeyWait, Space
SetTimer, 2_Key_Down_Timer, 100
ClipPaste:=clipboard

KeyWait, LWin
SetTimer, 2_Key_Down_Timer, off
ToolTip
clipboard_backup := clipboard
Clipboard:=ClipPaste
Send ^v
; SendInput %ClipPaste% ; too slow
clipboard := clipboard_backup

2_Key_Down_Timer:
if (GetKeyState("Space", "P") = 1) {
if index> 11
return
ClipPaste:=ClipOld%index%
CoordMode,ToolTip,Screen

Clip2 := SubStr(ClipPaste, 1, 100) "`n"SubStr(ClipPaste, 101, 100)"`n"SubStr(ClipPaste, 201, 100)"`n"SubStr(ClipPaste, 301, 100)"`n"SubStr(ClipPaste, 401, 100)
Clip2 := RegExReplace(Clip2, "`n`n","")

if (StrLen(ClipPaste)<=70){
ToolTip, % "#" index " ("StrLen(ClipPaste) ")" "`n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯`n" Clip2 "`n ̢"
}else

ToolTip, % "#" index " ("StrLen(ClipPaste) ") " "`n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯`n" Clip2 "`n ̢" ,500, 330

index+=1
}
KeyWait, Space
return
return

;^b:: SendInput %ClipOld%
;LAlt & Space:: Gosub, Show_Clipboard ;SendInput %clipboard%

;---------------------------------------------- LShift & Space::

LShift & Space::
index_Clip=2
CoordMode,ToolTip,Screen
;Clip1 := SubStr(clipboard, 1, 150) "`n" SubStr(clipboard, 151, 150) "`n" SubStr(clipboard, 301, 150) "`n" SubStr(clipboard, 451, 150) "`n" SubStr(clipboard, 601, 150)
Clip1 := SubStr(clipboard, 1, 100) "`n" SubStr(clipboard, 101, 100) "`n" SubStr(clipboard, 201, 100) "`n" SubStr(clipboard, 301, 100) "`n" SubStr(clipboard, 401, 100)
Clip1 := RegExReplace(Clip1, "`n`n`n","")

;Clip3 := (StrLen(ClipOld1)>0) ? SubStr(ClipOld1, 1, 150) "`n" SubStr(ClipOld1, 151, 150) "`n" SubStr(ClipOld1, 301, 150) "`n" SubStr(ClipOld1, 451, 150) "`n" SubStr(ClipOld1, 601, 150) : ""
Clip3 := (StrLen(ClipOld1)>0) ? SubStr(ClipOld1, 1, 100) "`n" SubStr(ClipOld1, 201, 100) "`n" SubStr(ClipOld1, 301, 100) "`n" SubStr(ClipOld1, 401, 100) "`n" SubStr(ClipOld1, 501, 100) : ""
Clip3 := RegExReplace(Clip3, "`n`n`n","")

;ToolTip, % "Clipboard ("StrLen(clipboard)"): `n‾‾‾‾‾‾‾‾‾‾‾`n" Clip1 "`n`n_________________________________________ `n‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ `nClip1 (" StrLen(ClipOld)"): `n‾‾‾‾‾‾‾‾‾‾`n" Clip3 "`n___",400, 330
;ToolTip, % "Clipboard ("StrLen(clipboard)"): `n¯¯¯¯¯¯¯¯¯¯¯`n" Clip1 "`n`n_________________________________________ `n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ `nClip1 (" StrLen(ClipOld1)"): `n¯¯¯¯¯¯¯¯¯¯¯`n" Clip3 "`n ̢",400, 330
ToolTip, % "Clipboard ("StrLen(clipboard)"): `n¯¯¯¯¯¯¯¯¯¯¯`n" Clip1 "`n`n_________________________________________ `n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ `n#1 (" StrLen(ClipOld1)"): `n¯¯¯¯¯¯¯¯¯¯¯`n" Clip3 "`n ̢",500, 330

KeyWait, Space
SetTimer, 2_Key_Down_Timer_2, 100
ClipPaste:=clipboard

KeyWait, LShift
SetTimer, 2_Key_Down_Timer_2, off
ToolTip

2_Key_Down_Timer_2:
if (GetKeyState("Space", "P") = 1) {
if index_Clip> 10
return
ClipPaste:=ClipOld%index_Clip%
index_Clip2:=index_Clip +1
ClipPaste2:=ClipOld%index_Clip2%
CoordMode,ToolTip,Screen
Clip2 := SubStr(ClipPaste, 1, 100) "`n"SubStr(ClipPaste, 101, 100)"`n"SubStr(ClipPaste, 201, 100)"`n"SubStr(ClipPaste, 301, 100)"`n"SubStr(ClipPaste, 401, 100)
Clip2 := RegExReplace(Clip2, "`n`n","")

Clip4 := SubStr(ClipPaste2, 1, 100) "`n" SubStr(ClipPaste2, 201, 100) "`n" SubStr(ClipPaste2, 301, 100) "`n" SubStr(ClipPaste2, 401, 100) "`n" SubStr(ClipPaste2, 501, 100)
Clip4 := RegExReplace(Clip4, "`n`n","")
ToolTip, % "#" index_Clip " (" StrLen(ClipPaste)"): `n‾‾‾‾‾‾‾‾‾‾`n" Clip2 "`n_________________________________________ `n‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ `n#" index_Clip2 " (" StrLen(ClipPaste2) "): `n‾‾‾‾‾‾‾‾‾‾`n" Clip4 "`n ̢" ,500, 330

index_Clip+=2
}
KeyWait, Space
return
return


^Space:: Gosub, Show_Clips_All

Show_Clips_All:
AutoTrim, On
Clips1 := "#0 (" StrLen(clipboard)"): `n" SubStr(Clipboard, 1, 50) "`n______________________`n" "#1 (" StrLen(ClipOld)"): `n" SubStr(ClipOld1, 1, 50) "`n______________________`n" "#2 (" StrLen(ClipOld2)"): `n" SubStr(ClipOld2, 1, 50)"`n______________________`n" "#3 (" StrLen(ClipOld3)"): `n" SubStr(ClipOld3, 1, 50)"`n______________________`n" "#4 (" StrLen(ClipOld4)"): `n" SubStr(ClipOld4, 1, 50)"`n______________________`n" "#5 (" StrLen(ClipOld5)"): `n" SubStr(ClipOld5, 1, 50)
Clips2 := "#6 (" StrLen(ClipOld6)"): `n" SubStr(ClipOld6, 1, 50) "`n______________________`n" "#7 (" StrLen(ClipOld7)"): `n" SubStr(ClipOld7, 1, 100) "`n______________________`n" "#8 (" StrLen(ClipOld8)"): `n" SubStr(ClipOld8, 1, 50)"`n______________________`n" "#9 (" StrLen(ClipOld9)"): `n" SubStr(ClipOld9, 1, 50)"`n______________________`n" "#10 (" StrLen(ClipOld10)"): `n" SubStr(ClipOld10, 1, 50)
CoordMode,ToolTip,Screen
ToolTip %Clips1%`n______________________`n%Clips2%,500, 200
;Sleep 3000
loop {
Sleep 3000
If !MouseIsOver("ahk_class tooltips_class32")
break
}
ToolTip
return




MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}




▐▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌


No comments:

Post a Comment