python屏幕取词_Linux屏幕取词翻译 - 思路及实现

觉得不太满足,刚好可以在这基础上弄个屏幕取词翻译就好了,要解决的问题有几个:鼠标动作监测

屏幕字符提取

字符串翻译

界面显示

一:鼠标动作监测

对于鼠标动作的监测,可以直接操作鼠标设备文件/dev/input/mice来完成,了解一下鼠标接口的相关协议http://www.isdaman.com/alsos/hardware/mouse/ps2interface.htm,可以从mice中读取出几个需要用到的按键信息存储到一个数组中,通过对数组信息的分析推算鼠标动作。

二:屏幕字符提取

关于屏幕字符提取,想到几种方法,

一是截图识别,不过准确率不够,实施起来也不算简单;

二是看能否从帧缓冲设备着手直接提取选中的字符,不过,太过底层,涉及的东西又多还都是知识盲区暂时不考虑;

三是用简单粗暴的办法,模拟按键发送Ctrl-C或者Ctrl-Shift-C来完成文本的复制。这个时候需要解决的问题有:如何获取剪贴板内容

如何获取当前窗口的应用名称

如何模拟按键发送复制操作

因为电脑是Arch+Gnome,底层提供窗口等的服务用的是Xlib,可以从这里入手,另外模拟键盘操作也可以向键盘设备文件写入一定格式的一定数据来完成。

获取窗口应用名称可以打开一个管道执行现有命令,并读取其输出即可。至于为何要获取应用名,是因为对于终端来说,复制操作是ctrl-shift-c而不是ctrl-c,既要区别对待,必然需要先识别出当前窗口属于哪个应用。

三:字符串翻译

直接用exec函数调用写好的谷歌翻译爬虫即可,项目地址:

之后又增加了个百度翻译的爬虫:

四:界面显示

可以采用Gtk完成界面编程,一方检测到有取词动作后进行翻译入口图标的弹出,按下入口图标后跳转到翻译窗口。

v2-33cf31521fce65b8c1e49b3b08c9d464.jpg取词翻译演示( 切超清才看得清)https://www.zhihu.com/video/1150925525630398464

代码架构

代码整体架构:主函数开启多个线程,分别用于鼠标动作检测、入口图标绘制,翻译界面呈现。

其中检测到取词动作后,调用封装好的函数获取剪贴板内容,送入Python翻译输入端,Python获取的结果按一定格式写入共享内存,约定写入完成标志位用于判断写入完成情况。

最后调整字符串,创建窗口,呈现翻译结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值