ef72bae42f
The main motivation behind this change is to prepare input abstractions for virtual input devices so the wl_seat can properly advertise caps or the cursor getting properly mapped/unmapped when a fake pointer is added/removed on a system without a hardware mouse connected. With this, there are three abstractions - InputDevice, InputBackend, and InputRedirection. An InputDevice represents an input device such as a mouse, a keyboard, a tablet, etc. The InputBackend class notifies the InputRedirection about (dis-)connected devices. The InputRedirection manages the input devices. Such design allows to unify the event flow for real and virtual input devices. There can be several input backends active. For example, the libinput backend and an input backend that provides virtual input devices, e.g. libeis or org_kde_kwin_fake_input.
67 lines
2.7 KiB
C++
67 lines
2.7 KiB
C++
/*
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org>
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
#include "input_event.h"
|
|
|
|
namespace KWin
|
|
{
|
|
|
|
MouseEvent::MouseEvent(QEvent::Type type, const QPointF &pos, Qt::MouseButton button,
|
|
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
|
|
quint32 timestamp, const QSizeF &delta, const QSizeF &deltaNonAccelerated,
|
|
quint64 timestampMicroseconds, InputDevice *device)
|
|
: QMouseEvent(type, pos, pos, button, buttons, modifiers)
|
|
, m_delta(delta)
|
|
, m_deltaUnccelerated(deltaNonAccelerated)
|
|
, m_timestampMicroseconds(timestampMicroseconds)
|
|
, m_device(device)
|
|
{
|
|
setTimestamp(timestamp);
|
|
}
|
|
|
|
WheelEvent::WheelEvent(const QPointF &pos, qreal delta, qint32 discreteDelta, Qt::Orientation orientation,
|
|
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, InputRedirection::PointerAxisSource source,
|
|
quint32 timestamp, InputDevice *device)
|
|
: QWheelEvent(pos, pos, QPoint(), (orientation == Qt::Horizontal) ? QPoint(delta, 0) : QPoint(0, delta), delta, orientation, buttons, modifiers)
|
|
, m_device(device)
|
|
, m_orientation(orientation)
|
|
, m_delta(delta)
|
|
, m_discreteDelta(discreteDelta)
|
|
, m_source(source)
|
|
{
|
|
setTimestamp(timestamp);
|
|
}
|
|
|
|
KeyEvent::KeyEvent(QEvent::Type type, Qt::Key key, Qt::KeyboardModifiers modifiers, quint32 code, quint32 keysym,
|
|
const QString &text, bool autorepeat, quint32 timestamp, InputDevice *device)
|
|
: QKeyEvent(type, key, modifiers, code, keysym, 0, text, autorepeat)
|
|
, m_device(device)
|
|
{
|
|
setTimestamp(timestamp);
|
|
}
|
|
|
|
SwitchEvent::SwitchEvent(State state, quint32 timestamp, quint64 timestampMicroseconds, InputDevice* device)
|
|
: QInputEvent(QEvent::User)
|
|
, m_state(state)
|
|
, m_timestampMicroseconds(timestampMicroseconds)
|
|
, m_device(device)
|
|
{
|
|
setTimestamp(timestamp);
|
|
}
|
|
|
|
TabletEvent::TabletEvent(Type t, const QPointF &pos, const QPointF &globalPos,
|
|
int device, int pointerType, qreal pressure, int xTilt, int yTilt,
|
|
qreal tangentialPressure, qreal rotation, int z,
|
|
Qt::KeyboardModifiers keyState, qint64 uniqueID,
|
|
Qt::MouseButton button, Qt::MouseButtons buttons, const TabletToolId &tabletId)
|
|
: QTabletEvent(t, pos, globalPos, device, pointerType, pressure, xTilt, yTilt, tangentialPressure, rotation, z, keyState, uniqueID, button, buttons)
|
|
, m_id(tabletId)
|
|
{
|
|
}
|
|
|
|
}
|