KWayland

keyboard.h
1 /*
2  SPDX-FileCopyrightText: 2014 Martin Gräßlin <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6 #ifndef WAYLAND_KEYBOARD_H
7 #define WAYLAND_KEYBOARD_H
8 
9 #include <QObject>
10 
11 #include <KWayland/Client/kwaylandclient_export.h>
12 
13 struct wl_keyboard;
14 
15 namespace KWayland
16 {
17 namespace Client
18 {
19 class Surface;
20 
21 /**
22  * @short Wrapper for the wl_keyboard interface.
23  *
24  * This class is a convenient wrapper for the wl_keyboard interface.
25  *
26  * To create an instance use Seat::createKeyboard.
27  *
28  * @see Seat
29  **/
30 class KWAYLANDCLIENT_EXPORT Keyboard : public QObject
31 {
32  Q_OBJECT
33 public:
34  enum class KeyState {
35  Released,
36  Pressed,
37  };
38  explicit Keyboard(QObject *parent = nullptr);
39  virtual ~Keyboard();
40 
41  /**
42  * @returns @c true if managing a wl_keyboard.
43  **/
44  bool isValid() const;
45  /**
46  * Setup this Keyboard to manage the @p keyboard.
47  * When using Seat::createKeyboard there is no need to call this
48  * method.
49  **/
50  void setup(wl_keyboard *keyboard);
51  /**
52  * Releases the wl_keyboard interface.
53  * After the interface has been released the Keyboard instance is no
54  * longer valid and can be setup with another wl_keyboard interface.
55  *
56  * This method is automatically invoked when the Seat which created this
57  * Keyboard gets released.
58  **/
59  void release();
60  /**
61  * Destroys the data held by this Keyboard.
62  * This method is supposed to be used when the connection to the Wayland
63  * server goes away. If the connection is not valid anymore, it's not
64  * possible to call release anymore as that calls into the Wayland
65  * connection and the call would fail. This method cleans up the data, so
66  * that the instance can be deleted or set up to a new wl_keyboard interface
67  * once there is a new connection available.
68  *
69  * This method is automatically invoked when the Seat which created this
70  * Keyboard gets destroyed.
71  *
72  * @see release
73  **/
74  void destroy();
75 
76  /**
77  * @returns The Surface the Keyboard is on, may be @c null.
78  **/
79  Surface *enteredSurface() const;
80  /**
81  * @overload
82  **/
83  Surface *enteredSurface();
84 
85  /**
86  * @returns Whether key repeat is enabled on this keyboard
87  * @see keyRepeatRate
88  * @see keyRepeatDelay
89  * @see keyRepeatChanged
90  * @since 5.5
91  **/
92  bool isKeyRepeatEnabled() const;
93  /**
94  * @returns the key repeat rate in characters per second.
95  * @see isKeyRepeatEnabled
96  * @see keyRepeatDelay
97  * @see keyRepeatChanged
98  * @since 5.5
99  **/
100  qint32 keyRepeatRate() const;
101  /**
102  * @returns the delay in millisecond for key repeat after a press.
103  * @see isKeyRepeatEnabled
104  * @see keyRepeatRate
105  * @see keyRepeatChanged
106  * @since 5.5
107  **/
108  qint32 keyRepeatDelay() const;
109 
110  operator wl_keyboard *();
111  operator wl_keyboard *() const;
112 
113 Q_SIGNALS:
114  /**
115  * Notification that this seat's Keyboard is focused on a certain surface.
116  *
117  * @param serial The serial for this enter
118  **/
119  void entered(quint32 serial);
120  /**
121  * Notification that this seat's Keyboard is no longer focused on a certain surface.
122  *
123  * The leave notification is sent before the enter notification for the new focus.
124  *
125  * @param serial The serial of this enter
126  **/
127  void left(quint32 serial);
128  /**
129  * This signal provides a file descriptor to the client which can
130  * be memory-mapped to provide a keyboard mapping description.
131  *
132  * The signal is only emitted if the keymap format is libxkbcommon compatible.
133  *
134  * @param fd file descriptor of the keymap
135  * @param size The size of the keymap
136  **/
137  void keymapChanged(int fd, quint32 size);
138  /**
139  * A key was pressed or released.
140  * The time argument is a timestamp with millisecond granularity, with an undefined base.
141  * @param key The key which was pressed
142  * @param state Whether the key got @c Released or @c Pressed
143  * @param time The timestamp
144  **/
145  void keyChanged(quint32 key, KWayland::Client::Keyboard::KeyState state, quint32 time);
146  /**
147  * Notifies clients that the modifier and/or group state has changed,
148  * and it should update its local state.
149  **/
150  void modifiersChanged(quint32 depressed, quint32 latched, quint32 locked, quint32 group);
151  /**
152  * Emitted whenever information on key repeat changed.
153  * @see isKeyRepeatEnabled
154  * @see keyRepeatRate
155  * @see keyRepeatDelay
156  * @since 5.5
157  **/
158  void keyRepeatChanged();
159 
160 private:
161  class Private;
163 };
164 
165 }
166 }
167 
168 Q_DECLARE_METATYPE(KWayland::Client::Keyboard::KeyState)
169 
170 #endif
Wrapper for the wl_surface interface.
Definition: surface.h:43
Wrapper for the wl_keyboard interface.
Definition: keyboard.h:30
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Sep 25 2021 22:51:29 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.