summaryrefslogtreecommitdiff
path: root/src/vnc-keyboard-unstable-v1.h
blob: 3728b3f0c38aa5ddad03fedeef3e978836271a21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifndef VIRTUALKEYBOARD_H
#define VIRTUALKEYBOARD_H

#include "wayland-util.h"
#include <QQuickWindow>
#include <QtWaylandCompositor/QWaylandCompositorExtensionTemplate>
#include <QtWaylandCompositor/QWaylandQuickExtension>
#include <QtWaylandCompositor/QWaylandCompositor>
#include "qwayland-server-vnc-keyboard-unstable-v1.h"

class VncKeyboardManager  : public QWaylandCompositorExtensionTemplate<VncKeyboardManager>
        , public QtWaylandServer::vnc_virtual_keyboard_manager_v1
{
    Q_OBJECT
    Q_PROPERTY(QQuickWindow *window MEMBER m_window);

public:
    VncKeyboardManager(QWaylandCompositor *compositor = nullptr);
    void initialize() override;

protected:
    void vnc_virtual_keyboard_manager_v1_create_virtual_keyboard(Resource *resource, uint32_t id) override;

private:
    QQuickWindow *m_window;
};

class VncKeyboard  : public QWaylandCompositorExtensionTemplate<VncKeyboard>
        , public QtWaylandServer::vnc_keyboard_v1
{
    Q_OBJECT
public:
    VncKeyboard(QQuickWindow *window, struct ::wl_client *client, int id, int version);

protected:
    void vnc_keyboard_v1_key(Resource *resource, uint32_t time, uint32_t key, uint32_t state) override;
    void vnc_keyboard_v1_destroy(Resource *resource) override;

private:
    QQuickWindow *m_window;
    Qt::KeyboardModifiers m_keymod;
};

Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_CLASS(VncKeyboardManager)

#endif // VIRTUALKEYBOARD_H