这样就不用在按电脑的快捷键了.搜索了下网上的 有的网站说popclick可以(buneng).
mac 目前还没找到,windows挺多的,详细请看https://dragking.en.softonic.com/
这样就不用在按电脑的快捷键了.搜索了下网上的 有的网站说popclick可以(buneng).
mac 目前还没找到,windows挺多的,详细请看https://dragking.en.softonic.com/
要实现的话很简单,只要监控一下鼠标挂钩消息,在抬起的时候模拟个ctrl+c就行。
不过这个操作在很多情况下这种操作会带来额外的负面影响。
比如你要使用剪贴板里的内容替换一段文字,当你选中这段要替换的文字以后,这段文字就被复制到剪贴板,把要替换成的内容冲掉了。
我的办法是简化操作过程。在选中内容的时候,松开鼠标之前按C/或者右键就复制。可以参考Quicker的左键辅助功能:左键辅助 - Quicker
dragking
应该没有必要吧?如果还用剪贴板历史,那不是会有很多冗余
如果是单纯的浏览器的话, 有类似的扩展或者脚本. 选中即可复制.
如果所有软件都选中就复制,可能不是好选择.
如果是不想按下 ^c, 有些软件可以设置为中键复制. 比如鼠标软件、剪贴板软件等等。
Cent Browser 浏览器就有个 [自动复制选中文本] 功能,挺好用的~
能打败复制粘贴的,只有拖拽。
浏览器的,很好用的脚本:选中复制
在从粘贴板粘贴文本之前,就先删除掉要替换的内容,你觉得呢
nice, 朋友 chrome ok, 但是火狐不知道为啥不行
好的,已帮忙@脚本的作者说明情况了
作者的回复:
检查下是不是没开剪切板权限?
或者手动尝试更改代码17行为
.writeText(clipboard)
.then(() => {
console.log(‘文本已经成功复制到剪切板’)
})
.catch((err) => {
console.error(‘无法复制文本:’, err)
})
感谢您,我还要继续找找有没有全局的 没有的话 只能自己学代码了
Mouseinc可以,不过我现在也不太敢用它。
我曾经有类似的需求,需要复制一些文本,然后贴粘到网页的某个地方,后来我把我要复制的内容做成HTML文件,点击文字就会复制到剪贴板。
--------代码开始--------
这是 p 标签内容
贴代码显示不出来,要用的话用OCR转成文字吧
mouselnc 手势软件可以实现这个功能
我也有这种需求,但浏览器扩展或脚本无法在打开的 pdf 上运行,所以用 ahk 实现的,源代码忘了哪找的,这个是在源代码基础上改了一部分,可以自定义开关以及程序窗口黑白名单,支持双击、Shift 选中、拖拽复制
ahk v1
#NoEnv
SetBatchLines -1
ListLines Off
; 设置 F1 作为启动和关闭热键
F1::
suspend
; 判断变量 toggle 是否定义,若未定义则初始化为 false
if (toggle = "")
toggle := false
; 切换变量 toggle 的值
toggle := !toggle
; 显示提示信息
if toggle
ToolTip, 复制已关闭, 900, 500, , 30
else
ToolTip, 复制已开启, 900, 500, , 30
; 等待 1 秒后清除提示信息
Sleep, 1000
ToolTip
return
#IfWinActive, ahk_exe firefox.exe
; 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
Send ^c ; 发送 Ctrl+C 组合键(使此处自动恢复为复制功能)
ClipWait ; 等待剪贴板不为空
; 字符串修正
clipboard := StrReplace(clipboard, " `r`n", " ")
clipboard := StrReplace(clipboard, "-`r`n", "")
FoundPos := RegExMatch(clipboard, "^[a-z|A-Z].*", match)
; MsgBox % FoundPos
If (FoundPos = 0)
; Chinese content
clipboard := StrReplace(clipboard, "`r`n", "")
else
; English content
clipboard := StrReplace(clipboard, "`r`n", " ")
return
}
return
}
}
; 全选复制
; ~^a::Send, ^c ;Ctl+A = Select All, then Copy
^c::
; 进行常规复制命令
clipboard := "" ; 清空剪贴板(配合 ClipWait 提高脚本健壮性)
Send ^c ; 发送 Ctrl+C 组合键( 使此处自动恢复为复制功能)
ClipWait ; 等待剪贴板不为空
; 字符串修正
clipboard := StrReplace(clipboard, " `r`n", " ")
clipboard := StrReplace(clipboard, "-`r`n", "")
FoundPos := RegExMatch(clipboard, "^[a-z|A-Z].*", match)
; MsgBox % FoundPos
If (FoundPos = 0)
; Chinese content
clipboard := StrReplace(clipboard, "`r`n", "")
else
; English content
clipboard := StrReplace(clipboard, "`r`n", " ")
return
; 左键拖选文字: 复制
WatchTheMouse:
MouseGetPos, nx, ny
dy := ny-oy
dx := nx-ox
If (dx**2 > 0 and dx**2>dy**2) ;edit 4 for sensitivity (changes sensitivity to movement)
{
times := Abs(dy)/1 ;edit 1 for sensitivity (changes frequency of scroll signal)
Loop, %times%
{
If (dx > 0)
Click WheelRight
Else
Click WheelLeft
}
}
If (dy**2 > 0 and dy**2>dx**2) ;edit 0 for sensitivity (changes sensitivity to movement)
{
times := Abs(dy)/1 ;edit 1 for sensitivity (changes frequency of scroll signal)
Loop, %times%
{
If (dy > 0)
Click WheelDown
Else
Click WheelUp
}
}
MouseMove ox, oy
return
SystemCursor(OnOff=1) ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
{
static AndMask, XorMask, $, h_cursor
,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors
, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors
if (OnOff = "Init" or OnOff = "I" or $ = "") ; init when requested or at first call
{
$ = h ; active default cursors
VarSetCapacity( h_cursor,4444, 1 )
VarSetCapacity( AndMask, 32*4, 0xFF )
VarSetCapacity( XorMask, 32*4, 0 )
system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
StringSplit c, system_cursors, `,
Loop %c0%
{
h_cursor := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% )
h%A_Index% := DllCall( "CopyImage", "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 )
b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0
, "int",32, "int",32, "uint",&AndMask, "uint",&XorMask )
}
}
if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
$ = b ; use blank cursors
else
$ = h ; use the saved cursors
Loop %c0%
{
h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 )
DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% )
}
}
return
gnPressCount := 0
~LButton::
cos_mousedrag_treshold := 20 ; pixels
MouseGetPos, cos_mousedrag_x, cos_mousedrag_y
win1 := WinActive("A")
KeyWait LButton
MouseGetPos, cos_mousedrag_x2, cos_mousedrag_y2
win2 := WinActive("A")
WinGetClass cos_class, A
if(((abs(cos_mousedrag_x2 - cos_mousedrag_x) > cos_mousedrag_treshold
or abs(cos_mousedrag_y2 - cos_mousedrag_y) > cos_mousedrag_treshold)) and win1 = win2
and cos_class != "ConsoleWindowClass")
{
; SendInput ^c ;不换行
; clipboard := "" ; 清空剪贴板(配合 ClipWait 提高脚本健壮性)
Send ^c ; 发送 Ctrl+C 组合键(使此处自动恢复为复制功能)
ClipWait ; 等待剪贴板不为空
; 字符串修正
clipboard := StrReplace(clipboard, " `r`n", " ")
clipboard := StrReplace(clipboard, "-`r`n", "")
FoundPos := RegExMatch(clipboard, "^[a-z|A-Z].*", match)
; MsgBox % FoundPos
If (FoundPos = 0)
; Chinese content
clipboard := StrReplace(clipboard, "`r`n", "")
else
; English content
clipboard := StrReplace(clipboard, "`r`n", " ")
return
}
{
gnPressCount += 1
SetTimer, ProcSubroutine, Off
SetTimer, ProcSubroutine, 300
Return
}
ProcSubroutine:
{
; 在计时器事件触发时,需要将其关掉
SetTimer, ProcSubroutine, Off
If gnPressCount = 1
{
; 第一类行为
; MsgBox, 触发单击鼠标右键事件
}Else If gnPressCount = 2
{
; 第二类行为
Send, ^c
}Else
{
; MsgBox, 触发三击鼠标右键事件
}
; 在结束后,还需要将鼠标右键的按键次数置为0,以方便下次使用
gnPressCount := 0
Return
}
return
If (A_TimeSincePriorHotkey < 300)
{
Send, ^c
}
Return
;RButton::MButton
;MButton::RButton
#IfWinActive
这个怎么用?下载个autohotkey软件?