Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text X11剪贴板如何处理多种数据格式?_Text_Clipboard_X11_Xorg - Fatal编程技术网

Text X11剪贴板如何处理多种数据格式?

Text X11剪贴板如何处理多种数据格式?,text,clipboard,x11,xorg,Text,Clipboard,X11,Xorg,这可能也发生在你身上——有时,当你将某个网页上的文本复制到你最喜欢的网络邮件客户端上的富文本电子邮件草稿中时,你会不喜欢粘贴的文件有不同的字体/大小/重量。。它会以某种方式记住样式(选中时通常是图像)。如果你把它粘贴到你最喜欢的文本编辑器中,比如Vim,没有HTML,只有纯文本,那又有什么不同呢 剪贴板似乎以各种格式维护选定的数据。如何访问这些格式中的任何一种格式的数据(以编程方式或使用某些实用程序)?X11剪贴板是如何工作的?你从它可以提供的广告格式(主要由MIME类型标识)复制的应用程序。

这可能也发生在你身上——有时,当你将某个网页上的文本复制到你最喜欢的网络邮件客户端上的富文本电子邮件草稿中时,你会不喜欢粘贴的文件有不同的字体/大小/重量。。它会以某种方式记住样式(选中时通常是图像)。如果你把它粘贴到你最喜欢的文本编辑器中,比如Vim,没有HTML,只有纯文本,那又有什么不同呢


剪贴板似乎以各种格式维护选定的数据。如何访问这些格式中的任何一种格式的数据(以编程方式或使用某些实用程序)?X11剪贴板是如何工作的?

你从它可以提供的广告格式(主要由MIME类型标识)复制的应用程序。您粘贴到的应用程序必须选择其首选格式,并从源应用程序请求该格式

您可能看不到传输的所有样式信息的原因是,应用程序并不都支持包含样式信息的通用格式

您还可以看到问题,因为应用程序可能尝试粘贴HTML,但实际上无法处理所有HTML。或者应用程序可能有缺陷,或者可能对特定MIME类型的真正含义不一致

当然,几乎所有的应用程序都可以复制和粘贴纯文本,但除此之外,它还可以“触控即用”。如果你没有得到什么似乎是有意义的,你可以提交一个错误与其中一个应用程序

您可能会注意到,如果退出要从中复制的应用程序,则无法再粘贴。(除非您正在运行“剪贴板管理器”或其他程序。)这是因为在目标应用程序要求粘贴格式之前,源应用程序实际上没有任何数据离开。 有一些“剪贴板管理器”可以在您复制和存储数据时立即请求数据,因此您可以在源应用程序退出后进行粘贴,但它们也有缺点(如果数据很大,或者以10种格式提供,等等),该怎么办

如果安装了pygtk,下面的python代码将显示当前复制数据的可用格式。此应用程序显示ctrl+c复制的数据,而不是鼠标中键单击复活节彩蛋。(见附件)


浩劫p的答案中显示当前剪贴板格式的代码不幸地不再工作,因为中的API更改。以下是作为一行程序的更新版本:

python-c'导入gi;gi.要求_版本(“Gtk”、“3.0”);从gi.repository导入Gtk、Gdk;打印(*Gtk.Clipboard.get(Gdk.atom_intern(“Clipboard”,True))。等待_targets()[1],sep=“\n”)”

在ArchLinux中,您可以使用sudoPacman-spygtk安装PyGTK

下面是一些例子

来自Chrome的文本:

TIMESTAMP
TARGETS
SAVE_TARGETS
MULTIPLE
STRING
UTF8_STRING
TEXT
text/html
text/plain
来自Gnome终端的文本:

TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/plain;charset=utf-8
text/plain

我有一段时间的想法,浏览器也会维护自己的剪贴板,但这意味着它只能在浏览器应用程序过程中工作,事实并非如此。感谢您提供了非常有用的信息(我担心答案会包括t[eo]ns,如果是C代码行…),现在我只是想知道为什么文本/html数据是从firefox复制的(utf-8网页)采用utf-16le编码..后续操作,某种程度上:。关于实际尝试从剪贴板获取富文本的任何提示?我太懒了,不知道如何创建缓冲区。我无法使当前代码正常工作..我还随意将输出分成多行,以便更具可读性。请在回答中使用:)我写了一个小实用程序,它可以检查所有可用的格式,并以文本形式打印内容@Hi Angel very interest:)谢谢
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/plain;charset=utf-8
text/plain