- Qt 6.9
- Qt Wayland Compositor
- C++ Classes
- QWaylandSeat
- Qt Wayland Compositor | Commercial or GPLv3

# QWaylandSeat Class

The QWaylandSeat class provides access to keyboard, mouse, and touch input. More...

Header: | `#include <QWaylandSeat>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS WaylandCompositor)` `target_link_libraries(mytarget PRIVATE Qt6::WaylandCompositor)`
qmake: | `QT += waylandcompositor`
In QML: | WaylandSeat
Inherits: | QWaylandObject

- List of all members, including inherited members

## Public Types

enum | CapabilityFlag { Pointer, Keyboard, Touch, DefaultCapabilities }
flags | CapabilityFlags

## Properties

- drag : QWaylandDrag* const
- keymap : QWaylandKeymap* const

## Public Functions

| QWaylandSeat(QWaylandCompositor *compositor, QWaylandSeat::CapabilityFlags capabilityFlags = DefaultCapabilities)
virtual | ~QWaylandSeat() override
QWaylandSeat::CapabilityFlags | capabilities() const
QWaylandCompositor * | compositor() const
QWaylandDrag * | drag() const
virtual void | initialize()
bool | isInitialized() const
QWaylandKeyboard * | keyboard() const
QWaylandSurface * | keyboardFocus() const
QWaylandKeymap * | keymap()
QWaylandView * | mouseFocus() const
QWaylandPointer * | pointer() const
void | sendFullKeyEvent(QKeyEvent *event)
void | sendFullTouchEvent(QWaylandSurface *surface, QTouchEvent *event)
void | sendKeyEvent(int qtKey, bool pressed)
void | sendKeyPressEvent(uint code)
void | sendKeyReleaseEvent(uint code)
void | sendMouseMoveEvent(QWaylandView *view, const QPointF &localPos, const QPointF &outputSpacePos = QPointF())
void | sendMousePressEvent(Qt::MouseButton button)
void | sendMouseReleaseEvent(Qt::MouseButton button)
void | sendMouseWheelEvent(Qt::Orientation orientation, int delta)
void | sendTouchCancelEvent(QWaylandClient *client)
void | sendTouchFrameEvent(QWaylandClient *client)
uint | sendTouchPointEvent(QWaylandSurface *surface, int id, const QPointF &point, Qt::TouchPointState state)
uint | sendTouchPointMoved(QWaylandSurface *surface, int id, const QPointF &position)
uint | sendTouchPointPressed(QWaylandSurface *surface, int id, const QPointF &position)
uint | sendTouchPointReleased(QWaylandSurface *surface, int id, const QPointF &position)
`(since 6.7)` void | sendUnicodeKeyPressEvent(uint unicode)
`(since 6.7)` void | sendUnicodeKeyReleaseEvent(uint unicode)
bool | setKeyboardFocus(QWaylandSurface *surface)
void | setMouseFocus(QWaylandView *view)
QWaylandTouch * | touch() const

## Signals

void | cursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY)
void | keyboardFocusChanged(QWaylandSurface *newFocus, QWaylandSurface *oldFocus)
void | mouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus)

## Static Public Members

QWaylandSeat * | fromSeatResource(struct wl_resource *resource)

## Detailed Description

The QWaylandSeat provides access to different types of user input and maintains a keyboard focus and a mouse pointer. It corresponds to the wl_seat interface in the Wayland protocol.

## Member Type Documentation

### enum QWaylandSeat::CapabilityFlag
flags QWaylandSeat::CapabilityFlags

This enum type describes the capabilities of a QWaylandSeat.

Constant | Value | Description
--- | --- | ---
`QWaylandSeat::Pointer` | `0x01` | The QWaylandSeat supports pointer input.
`QWaylandSeat::Keyboard` | `0x02` | The QWaylandSeat supports keyboard input.
`QWaylandSeat::Touch` | `0x04` | The QWaylandSeat supports touch input.
`QWaylandSeat::DefaultCapabilities` | `Pointer | Keyboard | Touch` | The QWaylandSeat has the default capabilities.

The CapabilityFlags type is a typedef for QFlags<CapabilityFlag>. It stores an OR combination of CapabilityFlag values.

## Property Documentation

### `[read-only]` drag : QWaylandDrag* const

This property holds the drag and drop operations and sends signals when they start and end. The property stores details like what image should be under the mouse cursor when the user drags it.

Access functions:

QWaylandDrag * | drag() const

### `[read-only]` keymap : QWaylandKeymap* const

This property holds the keymap object.

A keymap provides a way to translate actual key scan codes into a meaningful value. For example, if you use a keymap with a Norwegian layout, the key to the right of the letter L produces an Ø.

Keymaps can also be used to customize key functions, such as to specify whether Control and CAPS lock should be swapped, and so on.

Access functions:

QWaylandKeymap * | keymap()

## Member Function Documentation

### QWaylandSeat::QWaylandSeat(QWaylandCompositor *compositor, QWaylandSeat::CapabilityFlags capabilityFlags = DefaultCapabilities)

Constructs a QWaylandSeat for the given compositor and capabilityFlags.

### `[override virtual noexcept]` QWaylandSeat::~QWaylandSeat()

Destroys the QWaylandSeat

### QWaylandSeat::CapabilityFlags QWaylandSeat::capabilities() const

Returns the capability flags for this QWaylandSeat.

### QWaylandCompositor *QWaylandSeat::compositor() const

Returns the compositor for this QWaylandSeat.

### `[signal]` void QWaylandSeat::cursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY)

This signal is emitted when the client has requested for a specific surface to be the mouse cursor. For example, when the user hovers over a particular surface, and you want the cursor to change into a resize arrow.

Both hotspotX and hotspotY are offsets from the top-left of a pointer surface, where a click should happen. For example, if the requested cursor surface is an arrow, the parameters indicate where the arrow's tip is, on that surface.

### QWaylandDrag *QWaylandSeat::drag() const

Returns the drag object for this QWaylandSeat.

Note: Getter function for property drag.

### `[static]` QWaylandSeat *QWaylandSeat::fromSeatResource(struct wl_resource *resource)

Returns the QWaylandSeat corresponding to the resource. The resource is expected to have the type wl_seat.

### `[virtual]` void QWaylandSeat::initialize()

Initializes parts of the seat corresponding to the capabilities set in the constructor, or through setCapabilities().

Note: Normally, this function is called automatically after the seat and compositor have been created, so calling it manually is usually unnecessary.

### bool QWaylandSeat::isInitialized() const

Returns true if the QWaylandSeat is initialized; false otherwise.

The value `true` indicates that it's now possible for clients to start using the seat.

### QWaylandKeyboard *QWaylandSeat::keyboard() const

Returns the keyboard for this input device.

### QWaylandSurface *QWaylandSeat::keyboardFocus() const

Returns the current focused surface for keyboard input.

See also setKeyboardFocus().

### `[signal]` void QWaylandSeat::keyboardFocusChanged(QWaylandSurface *newFocus, QWaylandSurface *oldFocus)

This signal is emitted when setKeyboardFocus() is called.

newFocus has the surface that received keyboard focus; or `nullptr` if no surface has focus. oldFocus has the surface that lost keyboard focus; or `nullptr` if no surface had focus.

### QWaylandKeymap *QWaylandSeat::keymap()

Returns the keymap object for this QWaylandSeat.

Note: Getter function for property keymap.

### QWaylandView *QWaylandSeat::mouseFocus() const

Returns the view that currently has mouse focus.

See also setMouseFocus().

### `[signal]` void QWaylandSeat::mouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus)

This signal is emitted when the mouse focus has changed from oldFocus to newFocus.

### QWaylandPointer *QWaylandSeat::pointer() const

Returns the pointer device for this QWaylandSeat.

### void QWaylandSeat::sendFullKeyEvent(QKeyEvent *event)

Sends the event to the keyboard device.

Note: The event should correspond to an actual keyboard key in the current mapping. For example, `Qt::Key_Exclam` is normally not a separate key: with most keyboards the exclamation mark is produced with Shift + 1. In that case, to send an exclamation mark key press event, use `QKeyEvent(QEvent::KeyPress, Qt::Key_1, Qt::ShiftModifier)`.

### void QWaylandSeat::sendFullTouchEvent(QWaylandSurface *surface, QTouchEvent *event)

Sends the event to the specified surface on the touch device.

Warning: This API will automatically map QEventPoint::id() to a sequential id before sending it to the client. It should therefore not be used in combination with the other API using explicit ids, as collisions might occur.

### `[invokable]` void QWaylandSeat::sendKeyEvent(int qtKey, bool pressed)

Sends a key press (if pressed is `true`) or release (if pressed is `false`) event of a key qtKey to the keyboard device.

Note: This function does not support key events that require modifiers, such as `Qt::Key_Exclam`. Use sendFullKeyEvent instead.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### void QWaylandSeat::sendKeyPressEvent(uint code)

Sends a key press event with the key code to the keyboard device.

### void QWaylandSeat::sendKeyReleaseEvent(uint code)

Sends a key release event with the key code to the keyboard device.

### void QWaylandSeat::sendMouseMoveEvent(QWaylandView *view, const QPointF &localPos, const QPointF &outputSpacePos = QPointF())

Sets the mouse focus to view and sends a mouse move event to the pointer device with the local position localPos and output space position outputSpacePos.

### void QWaylandSeat::sendMousePressEvent(Qt::MouseButton button)

Sends a mouse press event for button to the QWaylandSeat's pointer device.

### void QWaylandSeat::sendMouseReleaseEvent(Qt::MouseButton button)

Sends a mouse release event for button to the QWaylandSeat's pointer device.

### void QWaylandSeat::sendMouseWheelEvent(Qt::Orientation orientation, int delta)

Sends a mouse wheel event to the QWaylandSeat's pointer device with the given orientation and delta.

### `[invokable]` void QWaylandSeat::sendTouchCancelEvent(QWaylandClient *client)

Sends a cancel event to the touch device of a client.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QWaylandSeat::sendTouchFrameEvent(QWaylandClient *client)

Sends a frame event to the touch device of a client to indicate the end of a series of touch up, down, and motion events.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### uint QWaylandSeat::sendTouchPointEvent(QWaylandSurface *surface, int id, const QPointF &point, Qt::TouchPointState state)

Sends a touch point event to the surface on a touch device with the given id, point and state.

Warning: This API should not be used in combination with forwarding of touch events using QWaylandQuickItem::touchEventsEnabled or sendFullTouchEvent, as it might lead to conflicting touch ids.

Returns the serial for the touch up or touch down event.

### `[invokable]` uint QWaylandSeat::sendTouchPointMoved(QWaylandSurface *surface, int id, const QPointF &position)

Sends a touch moved event for the touch point id on surface with position position.

Note: You need to send a touch frame event when you are done sending touch events.

Warning: This API should not be used in combination with forwarding of touch events using QWaylandQuickItem::touchEventsEnabled or sendFullTouchEvent, as it might lead to conflicting touch ids.

Returns the serial for the touch motion event.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` uint QWaylandSeat::sendTouchPointPressed(QWaylandSurface *surface, int id, const QPointF &position)

Sends a touch pressed event for the touch point id on surface with position position.

Note: You need to send a touch frame event when you are done sending touch events.

Warning: This API should not be used in combination with forwarding of touch events using QWaylandQuickItem::touchEventsEnabled or sendFullTouchEvent, as it might lead to conflicting touch ids.

Returns the serial for the touch down event.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` uint QWaylandSeat::sendTouchPointReleased(QWaylandSurface *surface, int id, const QPointF &position)

Sends a touch released event for the touch point id on surface with position position.

Note: You need to send a touch frame event when you are done sending touch events.

Warning: This API should not be used in combination with forwarding of touch events using QWaylandQuickItem::touchEventsEnabled or sendFullTouchEvent, as it might lead to conflicting touch ids.

Returns the serial for the touch up event.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable, since 6.7]` void QWaylandSeat::sendUnicodeKeyPressEvent(uint unicode)

Sends a key press event of a UCS4 unicode through a text-input protocol.

Note: This function will not work properly if the client does not support the text-input protocol that the compositor supports.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

This function was introduced in Qt 6.7.

See also sendKeyEvent.

### `[invokable, since 6.7]` void QWaylandSeat::sendUnicodeKeyReleaseEvent(uint unicode)

Sends a key release event of a UCS4 unicode through a text-input protocol.

Note: This function will not work properly if the client does not support the text-input protocol that the compositor supports.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

This function was introduced in Qt 6.7.

See also sendKeyEvent.

### bool QWaylandSeat::setKeyboardFocus(QWaylandSurface *surface)

Sets the current keyboard focus to surface. Returns a boolean indicating if the operation was successful.

See also keyboardFocus().

### void QWaylandSeat::setMouseFocus(QWaylandView *view)

Sets the current mouse focus to view.

See also mouseFocus().

### QWaylandTouch *QWaylandSeat::touch() const

Returns the touch device for this QWaylandSeat.