42

それはおそらくあなたにも起こりました-あるWebページからお気に入りのWebメールクライアントのリッチテキスト電子メールドラフトにテキストをコピーするとき、貼り付けられた部分のフォント/サイズ/重量が異なるという事実を嫌うことがあります。 。それはどういうわけかスタイルを覚えています(選択されたとき、しばしば画像)。同じものをVimのようなお気に入りのテキストエディタに貼り付けると、HTMLはなく、プレーンテキストだけになります。

代替テキスト

クリップボードは、選択したデータをさまざまな形式で保持しているようです。これらの形式のいずれかで(プログラムまたは何らかのユーティリティを使用して)データにアクセスするにはどうすればよいですか?X11クリップボードはどのように機能しますか?

4

2 に答える 2

35

コピー元のアプリは、それが提供できる形式 (主に MIME タイプで識別) をアドバタイズします。貼り付け先のアプリは、好みの形式を選択し、ソース アプリからその形式を要求する必要があります。

転送されたすべてのスタイル情報が表示されない場合がある理由は、両方のアプリがスタイル情報を含む共通の形式をサポートしていないためです。

たとえば、アプリが HTML を貼り付けようとしても、実際にはすべての HTML を処理できない場合があるため、問題が発生することもあります。または、アプリにバグがあるか、特定の MIME タイプが実際に意味するものに同意していない可能性があります。

もちろん、ほぼすべてのアプリでプレーン テキストをコピーして貼り付けることができますが、それ以上はタッチ アンド ゴーです。理にかなっていると思われるものが得られない場合は、アプリの 1 つに対してバグを報告できます。

コピー元のアプリを終了すると、貼り付けができなくなることがあります。(「クリップボードマネージャー」などを実行している場合を除きます。)これは、宛先アプリが貼り付ける形式を要求するまで、実際にソースアプリからデータが送信されないためです。そのデータをコピーして保存するたびにすぐにデータを要求する「クリップボード マネージャー」があるため、ソース アプリの終了後に貼り付けることができますが、欠点があります (データが巨大な場合、または 10 の形式で提供される場合など)。 )

次の Python コードは、pygtk がインストールされている場合、現在コピーされているデータで使用可能な形式を表示します。このアプリは、中央クリックのイースターエッグではなく、ctrl+c でコピーしたデータを表示します。( http://freedesktop.org/wiki/Specifications/ClipboardsWikiを参照)

#!/usr/bin/python

import gtk;
clipboard = gtk.clipboard_get()
print("Current clipboard offers formats: " + str(clipboard.wait_for_targets()))
于 2010-08-26T04:01:11.320 に答える