1 /* 2 SPDX-FileCopyrightText: 2017 Roman Gilg <subdiff@gmail.com> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #ifndef KWINWAYLANDTOUCHPAD_H 8 #define KWINWAYLANDTOUCHPAD_H 9 10 #include <QString> 11 #include <backends/libinputcommon.h> 12 13 class QDBusInterface; 14 15 class KWinWaylandTouchpad : public LibinputCommon 16 { 17 Q_OBJECT 18 19 Q_PROPERTY(qreal scrollFactor READ scrollFactor WRITE setScrollFactor NOTIFY scrollFactorChanged) 20 21 public: 22 KWinWaylandTouchpad(QString dbusName); 23 ~KWinWaylandTouchpad() override; 24 25 bool init(); 26 27 bool getConfig(); 28 bool getDefaultConfig(); 29 bool applyConfig(); 30 bool isChangedConfig() const; 31 32 // 33 // general name()34 QString name() const override 35 { 36 return m_name.val; 37 } sysName()38 QString sysName() const 39 { 40 return m_sysName.val; 41 } supportsDisableEvents()42 bool supportsDisableEvents() const override 43 { 44 return m_supportsDisableEvents.val; 45 } setEnabled(bool enabled)46 void setEnabled(bool enabled) override 47 { 48 m_enabled.set(enabled); 49 } isEnabled()50 bool isEnabled() const override 51 { 52 return m_enabled.val; 53 } 54 // 55 // advanced supportsLeftHanded()56 bool supportsLeftHanded() const override 57 { 58 return m_supportsLeftHanded.val; 59 } supportsDisableEventsOnExternalMouse()60 bool supportsDisableEventsOnExternalMouse() const override 61 { 62 return m_supportsDisableEventsOnExternalMouse.val; 63 } supportsDisableWhileTyping()64 bool supportsDisableWhileTyping() const override 65 { 66 return m_supportsDisableWhileTyping.val; 67 } supportsMiddleEmulation()68 bool supportsMiddleEmulation() const override 69 { 70 return m_supportsMiddleEmulation.val; 71 } 72 // 73 // tapping setLmrTapButtonMap(bool set)74 void setLmrTapButtonMap(bool set) override 75 { 76 m_lmrTapButtonMap.set(set); 77 } 78 // 79 // acceleration speed and profile supportsPointerAcceleration()80 bool supportsPointerAcceleration() const override 81 { 82 return m_supportsPointerAcceleration.val; 83 } supportsPointerAccelerationProfileFlat()84 bool supportsPointerAccelerationProfileFlat() const override 85 { 86 return m_supportsPointerAccelerationProfileFlat.val; 87 } supportsPointerAccelerationProfileAdaptive()88 bool supportsPointerAccelerationProfileAdaptive() const override 89 { 90 return m_supportsPointerAccelerationProfileAdaptive.val; 91 } 92 // 93 // scrolling supportsNaturalScroll()94 bool supportsNaturalScroll() const override 95 { 96 return m_supportsNaturalScroll.val; 97 } supportsHorizontalScrolling()98 bool supportsHorizontalScrolling() const override 99 { 100 return false; 101 } supportsScrollTwoFinger()102 bool supportsScrollTwoFinger() const override 103 { 104 return m_supportsScrollTwoFinger.val; 105 } supportsScrollEdge()106 bool supportsScrollEdge() const override 107 { 108 return m_supportsScrollEdge.val; 109 } supportsScrollOnButtonDown()110 bool supportsScrollOnButtonDown() const override 111 { 112 return m_supportsScrollOnButtonDown.val; 113 } 114 115 // 116 // Scroll Factor supportsScrollFactor()117 bool supportsScrollFactor() const override 118 { 119 return true; 120 } scrollFactor()121 qreal scrollFactor() const 122 { 123 return m_scrollFactor.val; 124 } setScrollFactor(qreal factor)125 void setScrollFactor(qreal factor) 126 { 127 return m_scrollFactor.set(factor); 128 } 129 130 // 131 // Click method supportsClickMethodAreas()132 bool supportsClickMethodAreas() const override 133 { 134 return m_supportsClickMethodAreas.val; 135 } supportsClickMethodClickfinger()136 bool supportsClickMethodClickfinger() const override 137 { 138 return m_supportsClickMethodClickfinger.val; 139 } 140 141 Q_SIGNALS: 142 void scrollFactorChanged(); 143 144 private: 145 template<typename T> 146 bool valueLoader(Prop<T> &prop); 147 148 template<typename T> 149 QString valueWriter(const Prop<T> &prop); 150 // 151 // general 152 Prop<QString> m_name = Prop<QString>("name"); 153 Prop<QString> m_sysName = Prop<QString>("sysName"); 154 155 // 156 // advanced 157 Prop<bool> m_supportsLeftHanded = Prop<bool>("supportsLeftHanded"); 158 Prop<bool> m_supportsDisableWhileTyping = Prop<bool>("supportsDisableWhileTyping"); 159 Prop<bool> m_supportsMiddleEmulation = Prop<bool>("supportsMiddleEmulation"); 160 161 // 162 // acceleration speed and profile 163 Prop<bool> m_supportsPointerAcceleration = Prop<bool>("supportsPointerAcceleration"); 164 165 // 166 // scrolling 167 Prop<bool> m_supportsNaturalScroll = Prop<bool>("supportsNaturalScroll"); 168 Prop<qreal> m_scrollFactor = Prop<qreal>("scrollFactor"); 169 170 QDBusInterface *m_iface; 171 }; 172 173 #endif 174