KWin
Loading...
Searching...
No Matches
inputmethod_v1.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#pragma once
8
9#include "kwin_export.h"
10
11#include <QList>
12#include <QObject>
13#include <memory>
14
15#include "textinput.h"
16
17namespace KWin
18{
19class OutputInterface;
20class SurfaceInterface;
21class SurfaceRole;
22class Display;
23class KeyboardInterface;
24class InputPanelSurfaceV1Interface;
25class InputMethodContextV1Interface;
26
27class InputMethodV1InterfacePrivate;
28class InputMethodContextV1InterfacePrivate;
29class InputPanelV1InterfacePrivate;
30class InputPanelSurfaceV1InterfacePrivate;
31class InputMethodGrabV1;
32class InputKeyboardV1InterfacePrivate;
33
34enum class KeyboardKeyState : quint32;
35
36// This file's classes implment input_method_unstable_v1
37
43class KWIN_EXPORT InputMethodV1Interface : public QObject
44{
45 Q_OBJECT
46public:
47 InputMethodV1Interface(Display *d, QObject *parent);
49
53 void sendActivate();
54
59 void sendDeactivate();
60
61 InputMethodContextV1Interface *context() const;
62
63private:
64 std::unique_ptr<InputMethodV1InterfacePrivate> d;
65};
66
70class KWIN_EXPORT InputMethodContextV1Interface : public QObject
71{
72 Q_OBJECT
73public:
75
76 void sendSurroundingText(const QString &text, quint32 cursor, quint32 anchor);
77 void sendReset();
78 void sendContentType(KWin::TextInputContentHints hint, KWin::TextInputContentPurpose purpose);
79 void sendInvokeAction(quint32 button, quint32 index);
80 void sendCommitState(quint32 serial);
81 void sendPreferredLanguage(const QString &language);
82
83 InputMethodGrabV1 *keyboardGrab() const;
84
85Q_SIGNALS:
86 void commitString(quint32 serial, const QString &text);
87 void preeditString(quint32 serial, const QString &text, const QString &commit);
88 void preeditStyling(quint32 index, quint32 length, quint32 style);
89 void preeditCursor(qint32 index);
90 void deleteSurroundingText(qint32 index, quint32 length);
91 void cursorPosition(qint32 index, qint32 anchor);
92 void keysym(quint32 serial, quint32 time, quint32 sym, bool pressed, quint32 modifiers);
93 void key(quint32 serial, quint32 time, quint32 key, bool pressed);
94 void modifiers(quint32 serial, quint32 mods_depressed, quint32 mods_latched, quint32 mods_locked, quint32 group);
95 void language(quint32 serial, const QString &language);
96 void textDirection(quint32 serial, Qt::LayoutDirection direction);
98 void modifiersMap(const QByteArray &map);
99
100private:
104 std::unique_ptr<InputMethodContextV1InterfacePrivate> d;
105};
106
110class KWIN_EXPORT InputPanelV1Interface : public QObject
111{
112 Q_OBJECT
113public:
114 InputPanelV1Interface(Display *display, QObject *parent);
116
117Q_SIGNALS:
119
120private:
121 std::unique_ptr<InputPanelV1InterfacePrivate> d;
122};
123
127class KWIN_EXPORT InputPanelSurfaceV1Interface : public QObject
128{
129 Q_OBJECT
130public:
132
133 static SurfaceRole *role();
134
135 enum Position {
136 CenterBottom = 0,
137 };
138 Q_ENUM(Position)
139
140 SurfaceInterface *surface() const;
141
142Q_SIGNALS:
143 void topLevel(OutputInterface *output, Position position);
146
147private:
148 InputPanelSurfaceV1Interface(SurfaceInterface *surface, quint32 id, QObject *parent);
150 std::unique_ptr<InputPanelSurfaceV1InterfacePrivate> d;
151};
152
156class KWIN_EXPORT InputMethodGrabV1 : public QObject
157{
158 Q_OBJECT
159public:
160 ~InputMethodGrabV1() override;
161
162 void sendKeymap(const QByteArray &content);
163 void sendKey(quint32 serial, quint32 timestamp, quint32 key, KeyboardKeyState state);
164 void sendModifiers(quint32 serial, quint32 depressed, quint32 latched, quint32 locked, quint32 group);
165
166private:
167 InputMethodGrabV1(QObject *parent);
170 std::unique_ptr<InputKeyboardV1InterfacePrivate> d;
171};
172
173}
174
Class holding the Wayland server display loop.
Definition display.h:34
void language(quint32 serial, const QString &language)
void deleteSurroundingText(qint32 index, quint32 length)
void modifiersMap(const QByteArray &map)
void preeditString(quint32 serial, const QString &text, const QString &commit)
void key(quint32 serial, quint32 time, quint32 key, bool pressed)
void modifiers(quint32 serial, quint32 mods_depressed, quint32 mods_latched, quint32 mods_locked, quint32 group)
void cursorPosition(qint32 index, qint32 anchor)
void keysym(quint32 serial, quint32 time, quint32 sym, bool pressed, quint32 modifiers)
void keyboardGrabRequested(InputMethodGrabV1 *keyboardGrab)
void textDirection(quint32 serial, Qt::LayoutDirection direction)
void preeditStyling(quint32 index, quint32 length, quint32 style)
void commitString(quint32 serial, const QString &text)
void topLevel(OutputInterface *output, Position position)
void inputPanelSurfaceAdded(InputPanelSurfaceV1Interface *surface)
Resource representing a wl_surface.
Definition surface.h:80
Q_DECLARE_METATYPE(KWin::SwitchEvent::State)
TextInputContentPurpose
Definition textinput.h:72
KeyboardKeyState
Definition seat.h:82
struct _XDisplay Display