Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问作者大大还有没有实现这个发送按键功能的计划呢 #370

Closed
plainround opened this issue Feb 25, 2024 · 2 comments
Closed

Comments

@plainround
Copy link

plainround commented Feb 25, 2024

#160
https://private-user-images.githubusercontent.com/56373419/246670568-8b4da183-d4f9-4f06-b39f-2fab85d37d80.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDg4MzgxNTcsIm5iZiI6MTcwODgzNzg1NywicGF0aCI6Ii81NjM3MzQxOS8yNDY2NzA1NjgtOGI0ZGExODMtZDRmOS00ZjA2LWIzOWYtMmZhYjg1ZDM3ZDgwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAyMjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMjI1VDA1MTA1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2YmZjM2M4OGNjYjk2ZmYzODI2ZmM3YjI5ZGNlZjdmMDhlM2IzNzkzOGI0MjEwY2QyNDkwOThmYzlkZTk1MmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.SQgMFVbhZ4na5ned7WMNG0QOEVkqwTdod48cToJn_XQ
#146
就是这个V2.0有计划但发布后尚未实现的功能。

在线翻译,或者与第三方翻译工具的联动。

目前我使用umiocr实现操作需要三步,
win+alt+c 开启ocr功能/框选截取词语图片/ctrl+c+c 触发goldendict快捷键,
如果实现这个功能在截图后直接发送快捷键,就能简化到两步,非常方便。

虽然也有替代方法https://forum.freemdict.com/t/topic/7166
但需要开机自启额外的软件,每次重新配置也有点麻烦,而且umiocr用户体验更好,如果能实现这个功能,对学习很有帮助!

此外关于这一翻译功能,个人理解在线翻译,虽然适合快速阅读大量外语,但如果是为了学习语言,准确理解词意用法,还是本地的goldendict这样的本地词典软件搭配专业词典资源更合适。
关于词典软件不支持翻译句子,现在也已经有不错的解决方案https://github.com/xinebf/google-translate-for-goldendict

@hiroi-sora
Copy link
Owner

hiroi-sora commented Feb 25, 2024

主要是我在纠结,以前的 联动翻译功能 对于普通用户不太容易理解,不够优雅。我在思考怎么能更有机的整合翻译方案。未来我是希望让Umi本身能实现翻译功能的。

对于目前版本,截图联动功能的实现是非常简单的,有需要的用户可以参考下述步骤在代码中开启:

  1. 用记事本或编辑器打开 UmiOCR-data\py_src\tag_pages\ScreenshotOCR.py
  2. 在第110行,即函数 def _onEnd 的末尾,self.callFunc(update)的后面,添加如下代码(句首空格必须与这里一样):
        from pynput import keyboard

        def send(keyList):
            for i in range(len(keyList)):
                if hasattr(keyboard.Key, keyList[i]):
                    keyList[i] = getattr(keyboard.Key, keyList[i]).value
            with keyboard.Controller().pressed(*tuple(keyList)):
                pass

        send(["ctrl", "c"])

想修改按键种类或次数,改动最后一行的 send 即可,比如改成 alt+ctrl+shift+v 三次:

        send(["alt", "ctrl", "shift", "v"])
        send(["alt", "ctrl", "shift", "v"])
        send(["alt", "ctrl", "shift", "v"])

@plainround
Copy link
Author

非常感谢您的帮助,对您开发开源程序依然力求用户友好的态度感到十分敬佩。
我发现如果只发送一遍按键,在选项 弹出主窗口 关闭时,且umiocr程序最小化到右下角托盘的情况下,程序获取到ocr结果,但第三方词典没反应。
选项 弹出主窗口 打开时,则有反应。
设置发送两次按键就没有这个问题了。
目前的代码是

        def send(keyList):
            for i in range(len(keyList)):
                if hasattr(keyboard.Key, keyList[i]):
                    keyList[i] = getattr(keyboard.Key, keyList[i]).value
            with keyboard.Controller().pressed(*tuple(keyList)):
                pass

        send(["ctrl", "c", "c"])
        send(["ctrl", "c", "c"])

目前没有问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants