Coder Social home page Coder Social logo

copyactiondaemon's Introduction

1. 初心

CopyTranslator真的是一个非常良心的文献阅读翻译软件,但或许是功能越来越多的原因,CopyTranslator也出现了一些bug。比如在”拖拽翻译“功能上,就可能出现明明已经划词,但是Copytranslator没有反应的情况。

如,在对照模式下:

这里已经勾选了“拖拽复制”功能,但是却没有效果,同样的情况也发生在专注模式下:

CopyActionDaemon则是为了解决这个feature bug而开发的。(当然了,CopyTranslaor仍在更新迭代中,所以这个Project很可能要不了多久就作废了)

另外:

由于个人不会js的相关技术,所以最终采用了自己比较熟悉的java来实现。但无需用户安装jre环境。

2. 使用

效果

拖拽翻译:

双击翻译:

如何使用?

进入 release页面下载对应平台安装包,目前打包了windows平台,下一步拟支持Linux平台,由于无mac电脑,所以无法打mac下的安装包。有兴趣的朋友可自行打包。

对于无对应安装包的平台,可自行下载jar包。(这种情况需要自行下载jre)

然后,打开terminal窗口,执行:

cdCopyActionDaemon.jar的路径下去
java -jar CopyActionDaemon.jar

如:

image-20200427202255644

windows平台可自行下载对应安装包。

系统托盘可管理是否开启自动复制:

image-20200506160201270

3. 开发过程

因为CopyTranslator的这个feature bug,其实弄得我挺糟心的,因为我太懒了,看文献的时候就是不想手动按Ctrl C。所以中途还上网找了两个其它方案--知云和scitranslate,但是它们两个的官网做得实在是一言难尽,且它们固定了pdf软件,而它们的pdf软件不满足我的要求(全屏+自定义背景色)。所以我尝试了小半天,还是回到了CopyTranslator的阵营。

于是为了解决CopyTranslator的这个”拖拽翻译“的bug,就有了这个小项目。

解决的思路其实很简单,虽然我不懂JS,但是CopyTranslator应该是监听系统clipboard的变化,然后从clipboard中读数据进行翻译。也就是说,我需要做的就仅仅是把给clipboard喂数据就行了。

image-20200427204951530

最开始想着用Qt来做,但是没想到Windows没有提供这样的Api(获取选中的文本),于是只能曲线救国:**监听鼠标的按下和释放过程,在释放的时候模拟Ctrl+C,这样就行把选中的文本复制到剪贴板中了。**结果Qt的模拟按键我没有找到合适的方法,主要还是自己把Qt给忘得差不多了。所以最终选择了java来做。

因为java本身是不支持全局监听鼠标的,所以这里用到了开源库:

另外,因为我没有mac的电脑,所以没法测试,mac用户如果需要使用,只需要修改

 // com.ravenxrz.copyactiondaemon.copymethods/CopyRobot.java
public synchronized void triggerCopy(){
    // CONTROL换Command
     robot.keyPress(KeyEvent.VK_CONTROL);
     robot.keyPress(KeyEvent.VK_C);  
     robot.delay(robot.getAutoDelay()); 
     robot.keyRelease(KeyEvent.VK_C);
    // CONTROL换Command
     robot.keyRelease(KeyEvent.VK_CONTROL);
 }                                                 

开源许可:GPL V3.0

copyactiondaemon's People

Contributors

ravenxrz avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

copyactiondaemon's Issues

非常有趣的项目

拖拽复制是一个实用且常用的功能,但其稳定性一直困扰着我,这个问题是由于所使用的nodejs第三方库不稳定造成的。你的仓库提供了一个新的解决思路,以外部程序提供拖拽复制功能。不过有一些点需要指出

  1. 遇到bug应首先向CopyTranslator仓库反馈,提供详细的出错报告,以便我更好地定位问题和改进软件。
  2. 软件需要依赖JRE比较大程度限制了其应用,如果能够使用c++或者其他不依赖虚拟机或运行时地语言实现能够极大地拓展其应用。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.