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