QEMU UI subsystem

QEMU Clipboard

Introduction

The header ui/clipboard.h declares the qemu clipboard interface.

All qemu elements which want use the clipboard can register as clipboard peer. Subsequently they can set the clipboard content and get notifications for clipboard updates.

Typical users are user interfaces (gtk), remote access protocols (vnc) and devices talking to the guest (vdagent).

Even though the design allows different data types only plain text is supported for now.

enum QemuClipboardType

Constants

QEMU_CLIPBOARD_TYPE_TEXT

text/plain; charset=utf-8

QEMU_CLIPBOARD_TYPE__COUNT

type count.

enum QemuClipboardSelection

Constants

QEMU_CLIPBOARD_SELECTION_CLIPBOARD

clipboard (explitcit cut+paste).

QEMU_CLIPBOARD_SELECTION_PRIMARY

primary selection (select + middle mouse button).

QEMU_CLIPBOARD_SELECTION_SECONDARY

secondary selection (dunno).

QEMU_CLIPBOARD_SELECTION__COUNT

selection count.

struct QemuClipboardPeer

Definition:

struct QemuClipboardPeer {
    const char *name;
    Notifier notifier;
    void (*request)(QemuClipboardInfo *info, QemuClipboardType type);
};

Members

Description

Clipboard peer description.

enum QemuClipboardNotifyType

Constants

QEMU_CLIPBOARD_UPDATE_INFO

clipboard info update

QEMU_CLIPBOARD_RESET_SERIAL

reset clipboard serial

Description

Clipboard notify type.

struct QemuClipboardNotify

Definition:

struct QemuClipboardNotify {
    QemuClipboardNotifyType type;
    union {
        QemuClipboardInfo *info;
    };
};

Members

Description

Clipboard notify data.

struct QemuClipboardInfo

Definition:

struct QemuClipboardInfo {
    uint32_t refcount;
    QemuClipboardPeer *owner;
    QemuClipboardSelection selection;
    bool has_serial;
    uint32_t serial;
    struct {
        bool available;
        bool requested;
        size_t size;
        void *data;
    } types[QEMU_CLIPBOARD_TYPE__COUNT];
};

Members

Description

Clipboard content data and metadata.

void qemu_clipboard_peer_register(QemuClipboardPeer *peer)

Parameters

QemuClipboardPeer *peer

void qemu_clipboard_peer_unregister(QemuClipboardPeer *peer)

Parameters

QemuClipboardPeer *peer

bool qemu_clipboard_peer_owns(QemuClipboardPeer *peer, QemuClipboardSelection selection)

Parameters

QemuClipboardPeer *peer

void qemu_clipboard_peer_release(QemuClipboardPeer *peer, QemuClipboardSelection selection)

Parameters

QemuClipboardPeer *peer

QemuClipboardInfo *qemu_clipboard_info(QemuClipboardSelection selection)

Parameters

QemuClipboardSelection selection

bool qemu_clipboard_check_serial(QemuClipboardInfo *info, bool client)

Parameters

QemuClipboardInfo *info

QemuClipboardInfo *qemu_clipboard_info_new(QemuClipboardPeer *owner, QemuClipboardSelection selection)

Parameters

QemuClipboardPeer *owner

QemuClipboardInfo *qemu_clipboard_info_ref(QemuClipboardInfo *info)

Parameters

QemuClipboardInfo *info

void qemu_clipboard_info_unref(QemuClipboardInfo *info)

Parameters

QemuClipboardInfo *info

void qemu_clipboard_update(QemuClipboardInfo *info)

Parameters

QemuClipboardInfo *info

void qemu_clipboard_reset_serial(void)

Parameters

void

no arguments

Description

void qemu_clipboard_request(QemuClipboardInfo *info, QemuClipboardType type)

Parameters

QemuClipboardInfo *info

void qemu_clipboard_set_data(QemuClipboardPeer *peer, QemuClipboardInfo *info, QemuClipboardType type, uint32_t size, const void *data, bool update)

Parameters

QemuClipboardPeer *peer