本工具是SharpKnife(利刃)效率工具库的成员
20211230 确保【Ctrl功能增强】进入命令循环后,输入的相关命令才有效
20211229 Tesseract5这个最新版本,本身就支持二值化处理,所以关闭通过imagemagick调用的二值化处理功能。
20211228 1)支持OCR前进行图片二值化处理,可以增强OCR识别的准确度。 2) 新增命令: 截图OCR即刻查词 “RCtrl-crwf” = “RCtrl-cr” + “RCtrl-wf” ; 截图OCR即刻翻译 “RCtrl-crff” = “RCtrl-cr” + “RCtrl-ff”; 剪切板查词 "RCtrl-cwf" ; 剪切板翻译 "RCtrl-cff"
20211227 新增截图OCR到剪切板:
RCtrl-cr
20211225 “划词翻译”优势在大段谷歌翻译,“沙拉查词”优势在查词,所以两者我都要。 此外“沙拉查词”通过设置可以保证谷歌浏览器进程一旦启动就不会退出,所以我基于“划词翻译”的相关谷歌浏览器进程维护代码就没有存在的必要的(全部删除)。 RCtrl-ff是“划词翻译”,如果没有选择弹出空的翻译窗口,如果选择了文本则翻译之;RCtrl-wf是“沙拉查词”,如果没有选择弹出空的查词窗口,如果选择了文本则查词之。 经过特别的设置,在本程序(脚本)的加持下,可以在任何位置对所选文本进行“翻译”或“查词”。
20211223, 彻底解决由于权限问题导致的脚本启动和程序运行问题。1) 首先本程序(脚本)必须以管理员身份运行(否则可能会在高权限窗口操作失效);2) 谷歌浏览器必须在普通权限下运行(否则本程序运行后无法打开谷歌浏览器);3)强制Snipaste也以管理员身份运行(否则可能会在高权限窗口操作失效)。
20211221, 在任意任何窗口选择文本然后Ctrl-ff翻译(需要谷歌浏览器和划词翻译扩展支持)
20211220, 彻底解决调用Snipaste作为剪切板历史浏览工具的稳定性问题。
20211218, 将自写简陋截图贴图功能,改成调用Snipaste软件实现,功能突然变强大(我这是投机取巧哦!)。
建议配置成开机启动
为了可在任何窗口下运行CtrlRich.exe 或 SharpKnife.exe,脚本强制以管理员身份运行。(比如: Ctrl-ff是选择翻译,如果是非管理员状态,有些环境会触发搜索快捷键Ctrl-f;用管理员身份运行可以避免这个问题: Ctrl-ff不会触发Ctrl-f搜索,只有Ctrl-f才能触发搜索)
git clone https://github.com/chaoskey/SharpKnife.git
# 需要先安装AutoHotkey
autohotkey.exe CtrlRich.ahk
# 或者 下载 https://github.com/chaoskey/SharpKnife/releases
CtrlRich.exe
默认情况下,程序启动后,会在程序或脚本目录下生成同名ini配置文件。 配置文件一旦生成,将以配置文件为准(可以手工修改指定)。
如果想启用对应的功能,请务必正确安装配置。
[CtrlRich]
; 如果没有正确配置好,意味着对应的功能不被本程序(脚本)支持
; Snipaste.exe默认在PATH路径中,否则需要自行配置全路径 【无窗口】
snipaste=Snipaste.exe
; 浏览器启动后的窗口标题|浏览器路径, 默认是谷歌浏览器并且在PATH路径中,否则需要自行配置全路径
; 目前谷歌浏览器和微软Edge浏览器已经通过测试
browser=Google Chrome|Chrome.exe
; OCR引擎tesseract默认在tesseract在PATH路径中,否则需要自行修改为全路径
; 如果不在指定位置(包括PATH路径中),意味着不支持OCR
tesseract=tesseract.exe
;
一般情况(没有用此脚本的情况), Ctrl-[任意单个字母]
, Ctrl按下、然后字母按下(哪怕都没松开)就会立刻触发。
我现在希望增强RCtrl功能(用此脚本的情况),目前已增强的操形如: RCtrl-[cvxsdafewrt]+
, RCtrl按下后必须松开才触发,每个字母必须是一次完整的点击(按下-松开)。 如果RCtrl按下未松开的状态下,按下的字母键未松开,会等待该字母键松开,确保是一次完整点击。
[cvxsdafewrt]+
的含义是使用正则表达式描述的,意思是:[cvxsdafewrt]
代表一个特定字母(cvxsdafewrt
之一), 而+
代表至少一个字母点击。
这说明,只有RCtrl-[cvxsdafewrt]+
相关的Ctrl功能被增强,除此之外没有任何影响或改变。
之所以增强RCtrl功能,是因为我和大部分人都是“右撇子”;同样道理,这些特殊字字母cvxsdafewrt
选用是因为它们都在键盘左边(如前图)。 “一左一右”符合快捷操作的习惯。
如果是RCtrl+[单字符]
= RCtrl-[cvxsdafewrt]
, 本脚本保证RCtrl松开后不改变系统的默认操作结果(当然本脚本可能会有额外的记录或动作,但不影响系统结果)。
RCtrl
按下但尚未松开时, 可以反复输入字符[cvxsdafewrt]
,相关能触发特定动作的命令,我称之为【控制命令】。
RCtrl
按下然后松开后,才触发特定动作的命令,我称之为【功能命令】。
注意:所有【控制命令】字符,在RCtrl
松开后都会消失,留下的字符才可能成为【功能命令】的一部分。
首先是功能命令,RCtrl松开后执行
RCtrl-[cvx]
系统复制(c)粘贴(v)剪切(x) 【复制和剪切的内容会被作为历史记录】
RCtrl-cc
截图复制(cc) 【需要Snipaste支持,截图的内容会被作为历史记录】
RCtrl-vv
贴图粘贴(vv) 【需要Snipaste支持】
RCtrl-cv
截贴图(cv) 【需要Snipaste支持,截图的内容会被作为历史记录】
RCtrl-sv
搜索(s)粘贴(v) 【搜索剪切板历史记录】
RCtrl-ce
剪切板(c)编辑(e) 【目前只支持文本剪切板编辑】
RCtrl-ww
屏幕白板(ww) 【需要Snipaste支持】
RCtrl-ct
剪切板(c)标签(t) ,可修改标签
RCtrl-ff
翻译(ff) 【需要谷歌浏览器和划词翻译插件支持】
RCtrl-wf
查词(wf) 【需要谷歌浏览器和沙拉查词插件支持】
RCtrl-cr
截图OCR(cr) 【需要tesseract-ocr支持】
然后是控制命令, RCtrl按下后松开前执行
RCtrl-v[asdf]+
或 RCtrl-vv[asdf]+
全部删除(a),浏览下一条(s),删除当前(d),浏览上一条(f)
RCtrl-[cvxsdafewrt]+x
标记放弃(x)
一旦RCtrl松开后
RCtrl-v[asdf]+
= RCtrl-v
系统粘贴
RCtrl-vv[asdf]+
= RCtrl-vv
屏幕贴图
RCtrl-v[asdf]+v
= RCtrl-vv
屏幕贴图
RCtrl-[cvxsdafewrt]+x
= RCtrl
放弃
因为所有【控制命令】字符,在RCtrl
松开后都会消失,所以不妨假设RCtrl
从按下到松开这个时间段没有出现过【控制命令】,也就是说所有的输入都可能时【功能命令】的一部分。
后面逐个对所有已经实现的功能命令进行说明。
系统复制(c)粘贴(v)剪切(x), 完整的功能命令对应 RCtrl-[cvx]
, RCtrl松开触发,并且功能保持不变。
正如前面所说, 系统原生RCtrl-[cvx]
只要按下去就会触发, 而在本脚本执行时,RCtrl松开才会触发。 这点区别务必注意。
同时也说明了[cvxsdafewt]
特定字符列表中出现[cvx]
的理由。
特别地, RCtrl-c
和RCtrl-x
除了系统功能外,本脚本还会将复制或剪切到系统剪切板的内容作为历史保存。
基于Snipaste实现的
RCtrl-cc
】鼠标选择截图 或 点击窗口截图 到 剪切板
这里的截图动作是:截图到系统剪切板,所以可以理解成截图复制(c),我称之为加强版(double)复制,所以对应的功能命令是“double c”
本脚本还会将截图复制到系统剪切板的内容作为历史保存。
RCtrl-vv
】剪切板贴图, 可以将位图,文字, 图片文件,贴图
这里的贴图动作是:将系统剪切板贴图到屏幕,所以可以理解成贴图粘贴(v),我称之为加强版(double)粘贴,所以对应的功能命令是“double v”
RCtrl-cv
】先截图然后直接粘贴到屏幕上
很明显是,RCtrl + CC
和 RCtrl + VV
的组合, 所以功能命令是cv
本脚本还会将截图复制到系统剪切板的内容作为历史保存。
本功能是通过调用Snipaste实现的,如果Snipaste没有安装是没有此功能,此时按上面的操作是没有任何动作的。
本脚本启动时会尝试启动Snipaste,如果正确地安装好了Snipaste(并且没有异常或主动退出),那么Snipaste就一定在运行中。
搜索剪切板历史记录,并选择粘贴
搜索粘贴 【功能命令: RCtrl-sv
】
程序流程是: 先搜索(s), 在结果列表中选择粘贴(v), ,所以对应的功能命令是“sv”
搜索(s)的具体流程是: 弹出搜索框-输入关键词-Enter搜索(s), 会进一步弹出选择列表
粘贴(v)的具体流程是: 方法1) 上下键选择-然后Tab或Enter确定粘贴 方法2) 鼠标点击选择目标项 或 鼠标双击目标项直接粘贴
如果有匹配的内容,则弹出列表选择粘贴; 如果没有则没有任何后续动作
我假定凡是经过搜索粘贴的内容都是重要的值得特别标记的内容,默认标记为★。
凡是特别标记的内容,不能被控制命令Ctrl-VA删除,只能被控制命令Ctrl-VD选择删除。【后面的控制命令中解释】
目前只支持文本剪切板编辑
剪切板编辑 【功能命令: RCtrl-ce
】
程序流程是: 将当前文本剪切板(c)的内容显示在弹出编辑框(e), 所以命令取: “ce”
然后,在编辑框修改,最后按Ctrl-S保存并粘贴。
注意: 可以在编辑框中修改标签
如果当前剪切板有标签,将会有形如[标签名]
的前缀
删除前缀[标签名]
,相当“删除标签”, 如果修改其中的内容相当于“修改标签”, Ctrl-S保存才生效。
在编辑框中,将对标记中的*转义成★, 比如[*]
转义成[★]
, Ctrl-S保存才生效。
如果Snipaste运行,才有此功能
屏幕白板 【功能命令: RCtrl-ww
】
程序流程是: 调出Snipaste白板(w)功能,之后按空格键(w)可调出面板, 所以命令取: “ww”
只有点击了复制图标,白板关闭后会自动保存为剪切板历史。
标签修改 【功能命令: RCtrl-ct
】
对应文本剪切板,可以通过编辑剪切板RCtrl-ce
的方式修改标签。
对于非文本剪切板,可用RCtrl-ct
直接修改当前剪切板标签。
会弹出的单行编辑框,会显示当前标签,如果没有标签则空。置空或输入标签名,然后Enter确认修改。
需要谷歌浏览器和“划词翻译”“沙拉查词”扩展支持
此功能的前置条件:
1)使用谷歌浏览器
2)启用“关闭 Google Chrome 后继续运行后台应用”
3)安装了“划词翻译”(chrome 网上应用店搜索“划词翻译”)【优势是大段翻译】
4)chrome://extensions/shortcuts,启用"划词翻译"中的“打开独立翻译窗口”全局快捷键: Ctrl+Shift+1
5)安装了“沙拉查词”(chrome 网上应用店搜索“沙拉查词”)【优势是查词】
6)在“沙拉查词设置 - 权限管理”中,启用“读取剪贴板”。
7)chrome://extensions/shortcuts,启用"沙拉查词"中的“在独立窗口中搜索剪贴板内容”全局快捷键: Ctrl+Shift+2
8)在“沙拉查词设置 - 基本选项”中,启用“后台保持运行”,然后保存。
注意:
第8)非常重要,这步可以确保谷歌浏览器打开后进程始终存在。
如果没有第8)步,一旦谷歌浏览器关闭, “沙拉查词”和“划词翻译”的独立窗口都关闭了,谷歌浏览器进程会完全退出。
所以,我在本程序(ahk脚本)添加了谷歌进程维护的代码,思路就是拦截"划词翻译"窗口关闭操作,将关闭操作改为最小化。
现在有了第8步,我就可以把相关的维护代码全部删除。
现在只要谷歌浏览器打开过,全局快捷键: Ctrl+Shift+1 和 Ctrl+Shift+2就自动生效,哪怕谷歌浏览器的相关窗口全部关闭。
RCtrl-ff
或 剪切板翻译 RCtrl-cff
】翻译的程序流程是: 采用“划词翻译”扩展全局快捷键: Ctrl+Shift+1。如果没有选择,则翻译上次所选内容; 如果选择了,则翻译当前所选内容
RCtrl-wf
或 剪切板查词 RCtrl-cwf
】查词的程序流程是: 采用“沙拉查词”扩展全局快捷键: Ctrl+Shift+2。如果没有选择,则翻译上次所选内容; 如果选择了,则翻译当前所选内容
【特别说明】
2021-12-25 我意外发现一个额外的功效: 如果你选择了一段文字A,然后RCtrl-ff
翻译,同时本脚本会将这段文字A复制剪切板,这时您在弹出的翻译面板的翻译结果上的“复制图标”,那么当前真实剪切板的内容就是翻译之后的内容,但是作为剪切板历史的当前“剪切板”内容还是翻译前的文字A。这是我们可以对当前真实剪切板的内容进行编辑(RCtrl-ce
),编辑后(Ctrl-s
)会将当前真实剪切板的内容(包括修改后的内容)保存到剪切板历史的当前“剪切板”内容,然后在当前光标位置粘贴翻译的结果。 这一条操作下来“行云流水”: 选择文字(手工)-翻译(RCtrl-ff
)-复制翻译结果(手工点击)-编辑翻译结果(RCtrl-ce
)-保存并粘贴(Ctrl-s
)。
需要tesseract-ocr支持; 【可选】需要imagemagick支持
20211229 Tesseract5这个最新版本,本身就支持二值化处理,所以关闭通过imagemagick调用的二值化处理功能。
功能命令1: 截图OCR进剪切板: RCtrl-cr
功能命令2: 截图OCR进剪切板,然后查词(基于沙拉查词扩展) RCtrl-crwf
功能命令3: 截图OCR进剪切板,然后翻译(基于划词查词扩展) RCtrl-crff
此功能的前置条件:
已经安装了tesseract-ocr
【可选】已经安装了imagemagick, 目前只用到图片二值化功能,可以增强OCR识别的准确度。
强烈推荐用scoop安装:
scoop install tesseract
scoop install tesseract-languages
# 可选安装,可以增强Tesseract-OCR识别的准确度
# > 20211229 Tesseract5这个最新版本,本身就支持二值化处理,所以关闭通过imagemagick调用的二值化处理功能。
# scoop install imagemagick
控制命令, 是在
RCtrl
按下后松开前执行的命令。
相关命令都是基于
RCtrl-v
或RCtrl-vv
增强的“控制命令”,RCtrl松开前执行。
RCtrl-va
或 RCtrl-vva
删除所有剪切板历史记录(有标签的除外)
RCtrl-vs
或 RCtrl-vvs
浏览下一条历史记录
RCtrl-vd
或 RCtrl-vvd
删除当前历史记录(有标签的也会被强制删除)
RCtrl-vf
或 RCtrl-vvf
浏览上一条历史记录
其中,RCtrl-v
或RCtrl-vv
后敲击的字母[asdf]
被称作基于粘贴的控制命令。
一旦RCtrl松开,所有控制命令会消失。
所以:
RCtrl松开后将,执行系统粘贴功能(RCtrl-v) 或 贴图功能(RCtrl-vv)
如果已经输入RCtrl-v[asdf]+
,RCtrl直接松开肯定是系统粘贴; 但是RCtrl松开前可以改变主意补敲一个v再松开,于是RCtrl-v[asdf]+v
= RCtrl-vv
就变成贴图功能了。
RCtrl-[cvxsdafewrt]+x
, 意味着放弃RCtrl-[cvxsdafewrt]
原本的动作,不做任何事放弃。
比如: RCtrl-vv[asdf]+
= RCtrl-vv
表示:执行完控制命令后贴图; 而 RCtrl-vv[asdf]+x
= RCtrl-vvx
表示: 只执行完控制命令
前面涉及的任何功能命令,一旦后面出现了x,都表示放弃。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。