Linux桌面鼠标取词自动翻译
说明:
鉴于linux环境下没有像有道词典一样好用的自动取词翻译的软件,所以决定自己写一个,方便看文档的时候,随时翻译。
程序基于Python 完成。环境fedora20.
准备阶段:
需要安装三个程序,需要用xclip命令获得取词后获得的文本内容。用xlib库获取鼠标取词后完成后的瞬间动作。用pynotify用来气泡弹出翻译结果。
yum install xclip
yum install python-xlib
yum install python-notify
关于Xlib的相关信息见:http://blog.csdn.net/celte/article/details/28240829
程序代码:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import sys
from Xlib import X,XK,display
from Xlib.ext import record
from Xlib.protocol import rq
import urllib2
import json
import pynotifyrecord_dpy=display.Display()
# Create a recording context; we only want key and mouse events
ctx = record_dpy.record_create_context(
0,
[record.AllClients],
[{
'core_requests': (0, 0),
'core_replies': (0, 0),
'ext_requests': (0, 0, 0, 0),
'ext_replies': (0, 0, 0, 0),
'delivered_events': (0, 0),
'device_events': (X.KeyPress, X.MotionNotify),
'errors': (0, 0),
'client_started': False,
'client_died': False,
}])pre_word="" #上次翻译的词语
appkey="Your AppKey" #百度翻译申请的appKeydef viewTranslate():global pre_wordglobal appkeyurl="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=%s&q=%s&from=auto&to=auto" % (appkey,pre_word)result=urllib2.urlopen(url).read()json_result=json.loads(result)pynotify.init("AutoTranslate")try:error_msg=json_result["error_msg"]query=json_result["query"]bubble=pynotify.Notification('"'+query+'"的翻译出错',error_msg)bubble.show()except:trans_result=json_result["trans_result"]src=trans_result[0]["src"]dst=trans_result[0]["dst"] bubble=pynotify.Notification('"'+src+'"的翻译结果',dst)bubble.show()def record_callback(reply):global pre_wordif reply.category != record.FromServer:returnif reply.client_swapped:#print "* received swapped protocol data, cowardly ignored"returnif not len(reply.data) or ord(reply.data[0]) < 2:# not an eventreturndata = reply.datawhile len(data):event, data = rq.EventField(None).parse_binary_value(data, record_dpy.display, None, None)if event.type == X.ButtonRelease:pipe = os.popen("xclip -o")text = pipe.readline()pipe.readlines() #清空管道剩余部分pipe.close()text=text.strip('\r\n\x00').lower().strip()if pre_word != text and text!="":pre_word=textviewTranslate()def gettext():os.system("xclip -f /dev/null") #清空剪切板record_dpy.record_enable_context(ctx,record_callback)record_dpy.record_free_context(ctx)def main():gettext()if __name__=='__main__':main()
Linux桌面鼠标取词自动翻译相关推荐
- 1.1. 鼠标取词 屏幕取词技术实现原理
1.1. 鼠标取词 屏幕取词技术实现原理 1.2. 需要用到winapi (不推荐,传统方法.] 需要进行全局鼠标Hook 然后在Hook事件里 根据鼠标的位置找到相应window的handle ...
- 电子词典中鼠标取词的原理
2000年11月27日 09:19:00 -- ※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.117.20.17] 发信人: Dreammy ( ...
- C# 屏幕取词 鼠标取词 非剪切板模式
C# 屏幕取词 鼠标取词 非剪切板模式 废话不说先看效果图: 录制_2022_08_20_15_26_13_626 在这里插入代码片 // 划词 ChooseWord c = new ChooseWo ...
- 360浏览器下载安装网易有道词典鼠标取词插件导致电脑蓝屏问题解决办法
问题详情 在360浏览器下载网易有道词典鼠标取词插件2.5.2,下载途中电脑鼠标失灵而后出现蓝屏,多次尝试重装360浏览器仍无法解决? 产生原因 多次重装仍然出现蓝屏,原因在于安装360浏览器时使用了 ...
- 金山词霸2005无法用鼠标取词
本文出自Simmy的个人blog:西米在线 http://simmyonline.com/archives/534.html 症状:用鼠标点单词时,词霸不会自动翻译.试过重装词霸,情况依旧,词霸词 ...
- linux桌面鼠标可动 但点其他,电脑鼠标能动但点不了的两种解决方法
大家是否遇到过鼠标用着用着突然点什么都点不了的情况,但是鼠标还是可以动的,此问题导致操作无法继续进行,部分网友对此问题都感到疑惑,检查设备设备都一切正常,要怎么才能解决?这里给大家讲解电脑鼠标能动但点 ...
- 关于Windows XP sp2下金山词霸2005取词BUG,桌面重启修正方法
新买的电脑新装Windows XP sp2,问题不断,竟连金山词霸2005都出问题,以前用的好好的,现在发现启动金山词霸后,桌面不断地重启,重装金山词霸N次未果.一室友同一安装盘的Windows XP ...
- python屏幕取词_GetWord 3.3 屏幕取词
1. 缘起 要搞一个作弊软件,需要把屏幕上的试题取下来. 据说针对IE的取词很难,所以也就打消了自己开发的念头,找一找好用的控件. 发现了两个可以用的,一个是金山词霸的XdictGrb.dll文件,一 ...
- python屏幕取词getword_专业屏幕取词引擎GetWord
GetWord是一款专业的屏幕取词组件(控件),它可以帮助您在公司产品中快速便捷地集成屏幕取词功能,有效降低软件开发成本.GetWord是世界上第一款也是目前唯一一款全面支持Windows和Adobe ...
- python屏幕取词getword_专业屏幕取词引擎-Getword
GetWord是一款专业的屏幕取词组件(控件),它可以帮助您在公司产品中快速便捷地集成屏幕取词功能,有效降低软件开发成本.GetWord是世界上第一款也是目前唯一一款全面支持Windows Vista ...
最新文章
- 【动态规划】Part1
- ROS系统——动态修改realsense相机参数方法
- 深度揭秘!蚂蚁业务自定义监控大盘是怎么设计的?
- ntent action大全
- 收入超10亿?罗永浩:要真有这个收入 我早就还完债做智能产品去了
- JVM 运行机制及基本原理
- git 创建远程仓库
- android sdk shell,Android SDK命令行工具Monkey参数及使用解析
- 图的遍历之深度优先搜索和广度优先搜索
- 虚拟机安装苹果系统_黑苹果原版系统镜像下载,MacOS如何安装到虚拟机?(附软件+教程)...
- 笔记本计算机风扇连线,机箱风扇接口怎么接电源线【图文】
- 阿里云产品分析(1):阿里云安全性分析与案例
- 英诺重明320T服务器安装VMware操作系统流程(图文超详细版)
- java中sql去除游标_SQL游标 - java.beggar - BlogJava
- python 获取本机IP地址
- 处理mysql启动报错Table 'mysql.plugin' doesn't exis
- 【Socket网络编程进阶与实战】------ Socket网络编程快速入门
- 苹果手机如何找回id密码_iPhone手机ID总是忘记密码,轻松一招帮你找回,原来这么简单...
- centos离线安装fastdfs
- 懒人外贸工具 外贸批量远程工具
热门文章
- dsp java_GitHub - sintrb/JavaDsp: 数字信号处理(DSP)方面的Java封装,包含常用的一些处理方法,如滤波、信号变换等等。...
- Java中action类与实现类Actionsupport
- 软件项目管理案例分析
- android qq输入法表情,QQ输入法-问题反馈
- Trend Micro officescan隔离删除文件恢复
- 纯HTML个人清新网站源码
- 条形码和二维码的原理简介
- 混响消除插件-Acon Digital DeVerberate 2 v2.1.2 WiN-MAC
- 如何使用Flexible实现手淘H5页面的终端适配
- 速看,PMP备考通关宝典来袭