您尚未登录。

#1 2014-11-16 21:08:20

atmouse
会员
注册时间: 2011-08-24
帖子: 701

[已解决]x11没有 xclipboard的listener之类的么?

我想监控剪切板变化,其他地方用,这个问题,我看了xclipit, 貌似是循环每0.5秒检测一次,
x11有没有事件可以callback调用之类的?

虽然循环检测是可行的







commit
终于找到了,当然,x11的selection primary还是没办法支持的。 不过ctrl+c的clipboard算是满足要求了
http://www.pygtk.org/pygtk2reference/cl … #id3645783

最近编辑记录 atmouse (2014-11-22 15:58:46)

离线

#2 2014-11-16 22:12:27

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,485
个人网站

Re: [已解决]x11没有 xclipboard的listener之类的么?

当然是可以做到的,X 本来就是异步的,各种事件。非要用底层的 X11 API 的话,参考一下 xsel 的源码吧。还有 fcitx-clipboard。

离线

#3 2014-11-16 22:50:33

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: [已解决]x11没有 xclipboard的listener之类的么?

OK, xsel 里面找到了,
不过,只是底层的事件阻塞而已,不是listener,得手动while

离线

#4 2014-11-16 22:51:18

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: [已解决]x11没有 xclipboard的listener之类的么?

要是有更高级的拓展lib就好了

离线

#5 2014-11-16 23:10:56

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,485
个人网站

Re: [已解决]x11没有 xclipboard的listener之类的么?

gtk 或者 gdk 应该有吧?

离线

#6 2014-11-17 23:38:38

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: [已解决]x11没有 xclipboard的listener之类的么?

额。。。。意识到错了,
x11的 SelectionEvent刚看了,属于特殊的事件,
是两个client之间的处理,一个owner, 多个requestor,
只有当requestor发起 SelectionRequest的时候,owner才会响应 SelectionNotify。 也就是说不会有listener这个东西了,想要知道粘贴板是否有变化,就得不停地request。。。

现在才明白为什么有时候在一个窗口复制好数据,接着关掉那个程序,发现到另一个窗口粘帖不出来。因为原来的owner没了,不会有响应, 所以才需要parcellite跟clipit这些软件

离线

#7 2014-11-17 23:52:37

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,485
个人网站

Re: [已解决]x11没有 xclipboard的listener之类的么?

咦,那 fcitx-clipboard 是怎么做的呢?

离线

#8 2014-11-18 00:02:47

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: [已解决]x11没有 xclipboard的listener之类的么?

primary 是没办法,但是其他复制粘贴还是可以监控的,
比如gtk里面选择文字ctrl+c可以通过按键事件来拦截吧

离线

#9 2014-11-18 00:05:29

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: [已解决]x11没有 xclipboard的listener之类的么?

如果像windows那样, 给每个进程都插一个dll,那个进程select了什么东西,也是可以监控到的。。。

离线

页脚