Как буфер обмена X11 обрабатывает несколько форматов данных?

Вы можете использовать это, я думаю.

final int n = 5;
Integer[][] ints = new Integer[n][2];
33
задан codingbadger 8 September 2010 в 07:05
поделиться

2 ответа

Приложение, из которого вы копируете, рекламирует форматы (в основном определяемые типами MIME), которые оно может предоставить. Приложение, в которое вы вставляете данные, должно выбрать предпочтительный формат и запросить его у исходного приложения.

Причина, по которой вы можете не увидеть всю переданную информацию о стиле, заключается в том, что оба приложения не поддерживают общий формат, включающий информацию о стиле.

Вы также можете столкнуться с проблемами, потому что приложение может, например, попытаться вставить HTML, но на самом деле не сможет обработать весь HTML. Или приложения могут содержать ошибки или могут не соглашаться с тем, что на самом деле означает конкретный тип MIME.

Конечно, почти все приложения могут и копировать, и вставлять обычный текст, но помимо этого все просто. Если вы не понимаете, что кажется логичным, вы можете сообщить об ошибке в одном из приложений.

Вы можете заметить, что если вы выйдете из приложения, из которого копируете, вы больше не сможете вставить. (Если вы не используете «менеджер буфера обмена» или что-то в этом роде.) Это связано с тем, что никакие данные фактически не покидают исходное приложение, пока целевое приложение не запросит формат для вставки. Существуют «менеджеры буфера обмена», которые запрашивают данные немедленно в любое время, когда вы копируете и сохраняете эти данные, поэтому вы можете вставить их после выхода из исходного приложения, но у них есть недостатки (что, если данные огромны или предлагаются в 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()))
30
ответ дан 27 November 2019 в 19:30
поделиться

Код в ответе P Опустошения для показа форматов текущего буфера обмена печально больше не работает из-за изменения API в PyGTK. Вот обновленная версия как острота:

python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk, Gdk; print(*Gtk.Clipboard.get(Gdk.atom_intern("CLIPBOARD", True)).wait_for_targets()[1], sep = "\n")'

В Дуге Linux, можно установить PyGTK с помощью sudo pacman -S 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
0
ответ дан 27 November 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: