File indexing completed on 2025-03-23 11:13:32
0001 /* 0002 SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org> 0003 SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "input.h" 0011 #include "kwin_export.h" 0012 0013 #include <QObject> 0014 0015 namespace KWin 0016 { 0017 0018 /** 0019 * The InputDevice class represents an input device, e.g. a mouse, or a keyboard, etc. 0020 */ 0021 class KWIN_EXPORT InputDevice : public QObject 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 explicit InputDevice(QObject *parent = nullptr); 0027 0028 virtual QString sysName() const = 0; 0029 virtual QString name() const = 0; 0030 0031 virtual bool isEnabled() const = 0; 0032 virtual void setEnabled(bool enabled) = 0; 0033 0034 virtual LEDs leds() const = 0; 0035 virtual void setLeds(LEDs leds) = 0; 0036 0037 virtual bool isKeyboard() const = 0; 0038 virtual bool isAlphaNumericKeyboard() const = 0; 0039 virtual bool isPointer() const = 0; 0040 virtual bool isTouchpad() const = 0; 0041 virtual bool isTouch() const = 0; 0042 virtual bool isTabletTool() const = 0; 0043 virtual bool isTabletPad() const = 0; 0044 virtual bool isTabletModeSwitch() const = 0; 0045 virtual bool isLidSwitch() const = 0; 0046 0047 virtual QString outputName() const; 0048 virtual void setOutputName(const QString &outputName); 0049 0050 Q_SIGNALS: 0051 void keyChanged(quint32 key, InputRedirection::KeyboardKeyState, std::chrono::microseconds time, InputDevice *device); 0052 void pointerButtonChanged(quint32 button, InputRedirection::PointerButtonState state, std::chrono::microseconds time, InputDevice *device); 0053 void pointerMotionAbsolute(const QPointF &position, std::chrono::microseconds time, InputDevice *device); 0054 void pointerMotion(const QPointF &delta, const QPointF &deltaNonAccelerated, std::chrono::microseconds time, InputDevice *device); 0055 void pointerAxisChanged(InputRedirection::PointerAxis axis, qreal delta, qint32 deltaV120, 0056 InputRedirection::PointerAxisSource source, std::chrono::microseconds time, InputDevice *device); 0057 void touchFrame(InputDevice *device); 0058 void touchCanceled(InputDevice *device); 0059 void touchDown(qint32 id, const QPointF &absolutePos, std::chrono::microseconds time, InputDevice *device); 0060 void touchUp(qint32 id, std::chrono::microseconds time, InputDevice *device); 0061 void touchMotion(qint32 id, const QPointF &absolutePos, std::chrono::microseconds time, InputDevice *device); 0062 void swipeGestureBegin(int fingerCount, std::chrono::microseconds time, InputDevice *device); 0063 void swipeGestureUpdate(const QPointF &delta, std::chrono::microseconds time, InputDevice *device); 0064 void swipeGestureEnd(std::chrono::microseconds time, InputDevice *device); 0065 void swipeGestureCancelled(std::chrono::microseconds time, InputDevice *device); 0066 void pinchGestureBegin(int fingerCount, std::chrono::microseconds time, InputDevice *device); 0067 void pinchGestureUpdate(qreal scale, qreal angleDelta, const QPointF &delta, std::chrono::microseconds time, InputDevice *device); 0068 void pinchGestureEnd(std::chrono::microseconds time, InputDevice *device); 0069 void pinchGestureCancelled(std::chrono::microseconds time, InputDevice *device); 0070 void holdGestureBegin(int fingerCount, std::chrono::microseconds time, InputDevice *device); 0071 void holdGestureEnd(std::chrono::microseconds time, InputDevice *device); 0072 void holdGestureCancelled(std::chrono::microseconds time, InputDevice *device); 0073 void switchToggledOn(std::chrono::microseconds time, InputDevice *device); 0074 void switchToggledOff(std::chrono::microseconds time, InputDevice *device); 0075 0076 void tabletToolEvent(InputRedirection::TabletEventType type, const QPointF &pos, 0077 qreal pressure, int xTilt, int yTilt, qreal rotation, bool tipDown, 0078 bool tipNear, const TabletToolId &tabletToolId, std::chrono::microseconds time); 0079 void tabletToolButtonEvent(uint button, bool isPressed, const TabletToolId &tabletToolId, std::chrono::microseconds time); 0080 0081 void tabletPadButtonEvent(uint button, bool isPressed, const TabletPadId &tabletPadId, std::chrono::microseconds time); 0082 void tabletPadStripEvent(int number, int position, bool isFinger, const TabletPadId &tabletPadId, std::chrono::microseconds time); 0083 void tabletPadRingEvent(int number, int position, bool isFinger, const TabletPadId &tabletPadId, std::chrono::microseconds time); 0084 }; 0085 0086 } // namespace KWin