Как отслеживать изменения буфера обмена в X11 Windows?

Кишоредбн

Я почти исчерпал все возможности найти API X11 для выполнения следующих действий.

У меня есть поток, который пытается отслеживать событие или уведомление, чтобы знать, когда что-либо копируется в буфер обмена любым X11 client. Я не хочу отслеживать конкретную цель Atom Target (формат буфера обмена), но обычно ищу изменения в буфере обмена.

Как только я знаю, что в буфере обмена что-то изменилось, я могу погрузиться и выполнить XConvertSelection()все целевые форматы (я хочу попросить serverпредоставить мне все возможные способы преобразования скопированных данных), а затем обработать их в SelectionRequestсобытие.

Опять же, я хочу, как правило, получать запросы для всех форматов (думая о перечислении от 1 до 1000 для проверки целевых атомов), а не регистрировать изменения для одного конкретного формата. На основе ответа сервера, если конкретный атом отсутствует, я могу проверить его Noneкак член свойства или сохранить другие целевые имена атомов в списке.

Может ли кто-нибудь помочь мне с отслеживанием изменений в буфере обмена? Кроме того, гарантирует ли итерация от 1 до 1000 исчерпывающий поиск всех возможных форматов? Или есть лучший способ сделать это?

число

Для отслеживания изменений используйте XFixes . С XCB он используется как:

// Enable XFixes
auto xfixes = xcb_get_extension_data(connection, &xcb_xfixes_id); // do not free!
ev_selection_change_notify = xfixes->first_event + XCB_XFIXES_SELECTION_NOTIFY;
auto *version = xcb_xfixes_query_version_reply(xcb_xfixes_query_version(connection, XCB_XFIXES_MAJOR_VERSION, XCB_XFIXES_MINOR_VERSION));

// Subscribe to clipboard notifications
xcb_xfixes_select_selection_input(connection, root, clipboard, XCB_XFIXES_SELECTION_EVENT_MASK_SET_SELECTION_OWNER);

// Event loop:
auto *event = xcb_poll_for_event(connection);
int etype = event->response_type & 0x7f;
if (etype == ev_selection_change_notify) {
    auto *notification = reinterpret_cast<xcb_xfixes_selection_notify_event_t *>(event);
    ...
}
...

В Xlib должно быть аналогично.

Чтобы проверить список доступных целей, не возвращайтесь к 1000! Просто запросите TARGETSцель, она должна предоставить вам список допустимых целей для содержимого буфера обмена.

Однако есть предостережение: вместо «буфера обмена» X11 позволяет приложениям использовать «выборки», которые могут быть помечены произвольными атомами. Из них CLIPBOARDпредставляет первостепенный интерес, но они PRIMARY(редко используются) SECONDARYтакже присутствуют, как и произвольный выбор для «частного общения».

Ссылка: https://www.x.org/releases/X11R7.7/doc/xorg-docs/icccm/icccm.html#Use_of_Selection_Atoms

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Соединение Python и X11 в windows

Запустите Omnet ++ внутри докера с пересылкой x11 в Windows. SSH не работает

Открытие приложений Cygwin X11 в Windows 10 с помощью ярлыков на рабочем столе

Библиотеки «X11 / Xlib.h», «X11 / Xutil.h», «unistd.h» для Windows

Ошибка «Библиотеки X11 не найдены» при установке пакета X11 с помощью Stack

начать сеанс x11 в schroot рядом со стандартным сеансом x11

Получить окно X11 внутри основного цикла для события

Как получить масштабный коэффициент системы в X11

В пакете R "сезонный", как узнать, какие фильтры выбран автоматическим алгоритмом x11?

Как mobaXterm узнает, работает ли пересылка x11 на удаленном сервере?

Как избежать SIGPIPE (из-за тайм-аута?) При отладке программы X11?

X11 Создание окна без отображения на панели задач

Получение информации о ближайшем мониторе к курсору мыши в X11

Получить заголовок активного окна в библиотеке X11 Haskell

VIM и X11: не трогайте первичный буфер

Как рисовать в X11 с помощью Go

Можно ли получить дескриптор файла X11, который использует Qt, чтобы я мог провести по нему опрос ()?

Как отправить нажатие клавиши после захвата другого ключевого события в X11

Получите скан-код вместо ключевого кода в Linux, используя X11

X11 - выключить экран

X11: получать уведомления при перемещении окна

Как переместить или изменить размеры окон X11 (даже если они развернуты)?

X11: рисовать наложение / удалять рисунки из наложения

в чем разница между X11 и Xlib?

как получить цвет пикселя экрана в x11

X11 / GLX - полноэкранный режим?

Прослушивание событий клавиатуры без их использования в X11 - Перехват клавиатуры

X11: запустить приложение gnome от имени другого пользователя

«Нет переменной дисплея X11» - что это значит?

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл