使用xclip计算粘贴事件


0

xclip是X剪贴板的命令行界面。当我尝试使用此工具设置安全功能时,我观察到了一些我不理解的效果。

我做的是我将循环选项设置为1将字符串换入xclip(xclip在单个粘贴事件后退出,循环设置为1),如下所示:

echo test | xclip -loops 1 -display :0 -selection c -verbose

然后,当我尝试粘贴我的Linux Mate桌面时,我观察到以下内容:粘贴到Web表单或Firefox搜索栏就像一个设置为1的循环的魅力,但粘贴到Firefox的地址栏是不可能的这个。

为了粘贴到Firefox地址栏,有必要将循环增加到2,即两个粘贴事件被“消耗”。粘贴到Google Chrome的地址栏中会消耗4个粘贴事件。即使粘贴到像Pluma这样的简单文本编辑器中也需要2个粘贴事件。

但为什么会这样呢?为什么有时需要多次提供剪贴板内容才能成功粘贴到应用程序中,为什么应用程序的行为如此不同?


IIRC有一些方案可以满足不同的缓冲区大小,因此应用程序也可以尝试多次读取选择,直到它们达到正确的缓冲区大小。此外,有时软件编写效率低,并且可能偶然多次调用相同的子程序。
dirkt

@dirkt感谢您提供缓冲区大小的提示。我不确定这是否重要,但我刚刚尝试粘贴不同大小的文本(最多7.5MB) - 它的效果完全相同。
SYN-cook

如果你想要细节(我不记得,它太长了),协议就是 这里 ,我想应该可以以某种方式追踪事件。
dirkt

Answers:


0

我猜这个答案与此相似: https://stackoverflow.com/a/24332080/266747 - 实际上,firefox可能会多次从PRIMARY剪贴板中读取以收集所有可用的目标(尽管不是 一定 在地址栏的上下文中有意义)。

这就是@dirkt在评论中所说的,但我试图自己回答同样的问题时遇到了stackoverflow链接,所以我想我会分享。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.