KWin
Loading...
Searching...
No Matches
input_event.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10
11#include "input.h"
12
13#include <QInputEvent>
14#include <chrono>
15
16namespace KWin
17{
18
19class InputDevice;
20
21class MouseEvent : public QMouseEvent
22{
23public:
24 explicit MouseEvent(QEvent::Type type, const QPointF &pos, Qt::MouseButton button, Qt::MouseButtons buttons,
25 Qt::KeyboardModifiers modifiers, std::chrono::microseconds timestamp,
26 const QPointF &delta, const QPointF &deltaNonAccelerated, InputDevice *device);
27
28 QPointF delta() const
29 {
30 return m_delta;
31 }
32
33 QPointF deltaUnaccelerated() const
34 {
35 return m_deltaUnccelerated;
36 }
37
38 std::chrono::microseconds timestamp() const
39 {
40 return m_timestamp;
41 }
42
44 {
45 return m_device;
46 }
47
48 Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts() const
49 {
50 return m_modifiersRelevantForShortcuts;
51 }
52
53 void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
54 {
55 m_modifiersRelevantForShortcuts = mods;
56 }
57
58 quint32 nativeButton() const
59 {
60 return m_nativeButton;
61 }
62
63 void setNativeButton(quint32 button)
64 {
65 m_nativeButton = button;
66 }
67
68private:
69 QPointF m_delta;
70 QPointF m_deltaUnccelerated;
71 std::chrono::microseconds m_timestamp;
72 InputDevice *m_device;
73 Qt::KeyboardModifiers m_modifiersRelevantForShortcuts = Qt::KeyboardModifiers();
74 quint32 m_nativeButton = 0;
75};
76
77// TODO: Don't derive from QWheelEvent, this event is quite domain specific.
78class WheelEvent : public QWheelEvent
79{
80public:
81 explicit WheelEvent(const QPointF &pos, qreal delta, qint32 deltaV120, Qt::Orientation orientation,
82 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, InputRedirection::PointerAxisSource source,
83 std::chrono::microseconds timestamp, InputDevice *device);
84
85 Qt::Orientation orientation() const
86 {
87 return m_orientation;
88 }
89
90 qreal delta() const
91 {
92 return m_delta;
93 }
94
95 qint32 deltaV120() const
96 {
97 return m_deltaV120;
98 }
99
101 {
102 return m_source;
103 }
104
106 {
107 return m_device;
108 }
109
110 Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts() const
111 {
112 return m_modifiersRelevantForShortcuts;
113 }
114
115 void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
116 {
117 m_modifiersRelevantForShortcuts = mods;
118 }
119
120 std::chrono::microseconds timestamp() const;
121
122private:
123 InputDevice *m_device;
124 Qt::Orientation m_orientation;
125 qreal m_delta;
126 qint32 m_deltaV120;
128 Qt::KeyboardModifiers m_modifiersRelevantForShortcuts = Qt::KeyboardModifiers();
129 const std::chrono::microseconds m_timestamp;
130};
131
132class KWIN_EXPORT KeyEvent : public QKeyEvent
133{
134public:
135 explicit KeyEvent(QEvent::Type type, Qt::Key key, Qt::KeyboardModifiers modifiers, quint32 code, quint32 keysym,
136 const QString &text, bool autorepeat, std::chrono::microseconds timestamp, InputDevice *device);
137
139 {
140 return m_device;
141 }
142
143 Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts() const
144 {
145 return m_modifiersRelevantForShortcuts;
146 }
147
148 void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
149 {
150 m_modifiersRelevantForShortcuts = mods;
151 }
152
153 std::chrono::microseconds timestamp() const;
154
155private:
156 InputDevice *m_device;
157 Qt::KeyboardModifiers m_modifiersRelevantForShortcuts = Qt::KeyboardModifiers();
158 const std::chrono::microseconds m_timestamp;
159};
160
161class SwitchEvent : public QEvent
162{
163public:
164 enum class State {
165 Off,
166 On
167 };
168 explicit SwitchEvent(State state, std::chrono::microseconds timestamp, InputDevice *device);
169
170 State state() const
171 {
172 return m_state;
173 }
174
175 std::chrono::microseconds timestamp() const
176 {
177 return m_timestamp;
178 }
179
181 {
182 return m_device;
183 }
184
185private:
186 State m_state;
187 std::chrono::microseconds m_timestamp;
188 InputDevice *m_device;
189};
190
192{
193public:
196 QList<InputRedirection::Capability> m_capabilities;
197 quint64 m_serialId;
198 quint64 m_uniqueId;
200 QString m_name;
201};
202
204{
205public:
206 const QString name;
207 void *data;
208};
209
210class TabletEvent : public QTabletEvent
211{
212public:
213 TabletEvent(Type t, const QPointingDevice *dev, const QPointF &pos, const QPointF &globalPos,
214 qreal pressure, float xTilt, float yTilt,
215 float tangentialPressure, qreal rotation, float z,
216 Qt::KeyboardModifiers keyState, Qt::MouseButton button, Qt::MouseButtons buttons, const TabletToolId &tabletId);
217
218 const TabletToolId &tabletId() const
219 {
220 return m_id;
221 }
222
223private:
224 const TabletToolId m_id;
225};
226
227}
InputDevice * device() const
Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts() const
void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
QPointF deltaUnaccelerated() const
Definition input_event.h:33
void setNativeButton(quint32 button)
Definition input_event.h:63
QPointF delta() const
Definition input_event.h:28
void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
Definition input_event.h:53
quint32 nativeButton() const
Definition input_event.h:58
InputDevice * device() const
Definition input_event.h:43
std::chrono::microseconds timestamp() const
Definition input_event.h:38
MouseEvent(QEvent::Type type, const QPointF &pos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, std::chrono::microseconds timestamp, const QPointF &delta, const QPointF &deltaNonAccelerated, InputDevice *device)
Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts() const
Definition input_event.h:48
SwitchEvent(State state, std::chrono::microseconds timestamp, InputDevice *device)
std::chrono::microseconds timestamp() const
State state() const
InputDevice * device() const
TabletEvent(Type t, const QPointingDevice *dev, const QPointF &pos, const QPointF &globalPos, qreal pressure, float xTilt, float yTilt, float tangentialPressure, qreal rotation, float z, Qt::KeyboardModifiers keyState, Qt::MouseButton button, Qt::MouseButtons buttons, const TabletToolId &tabletId)
const TabletToolId & tabletId() const
const QString name
QList< InputRedirection::Capability > m_capabilities
InputRedirection::TabletToolType m_toolType
InputDevice * device() const
InputRedirection::PointerAxisSource axisSource() const
qint32 deltaV120() const
Definition input_event.h:95
void setModifiersRelevantForGlobalShortcuts(const Qt::KeyboardModifiers &mods)
Qt::KeyboardModifiers modifiersRelevantForGlobalShortcuts() const
WheelEvent(const QPointF &pos, qreal delta, qint32 deltaV120, Qt::Orientation orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, InputRedirection::PointerAxisSource source, std::chrono::microseconds timestamp, InputDevice *device)
std::chrono::microseconds timestamp() const
qreal delta() const
Definition input_event.h:90
Qt::Orientation orientation() const
Definition input_event.h:85
Session::Type type
Definition session.cpp:17