File indexing completed on 2024-06-23 05:29:38
0001 /* 0002 SPDX-FileCopyrightText: 2019 Atul Bisht <atulbisht26@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "backends/libinputcommon.h" 0010 #include "xlibtouchpad.h" 0011 0012 #include <KConfigGroup> 0013 #include <KSharedConfig> 0014 0015 class LibinputTouchpad : public LibinputCommon, public XlibTouchpad 0016 { 0017 Q_OBJECT 0018 0019 public: 0020 LibinputTouchpad(Display *display, int deviceId); 0021 ~LibinputTouchpad() override 0022 { 0023 } 0024 0025 bool getConfig() override; 0026 bool applyConfig() override; 0027 bool getDefaultConfig() override; 0028 bool isChangedConfig() override; 0029 0030 int touchpadOff() override; 0031 XcbAtom &touchpadOffAtom() override; 0032 0033 private: 0034 template<typename T> 0035 bool valueLoader(Prop<T> &prop); 0036 0037 template<typename T> 0038 QString valueWriter(const Prop<T> &prop); 0039 0040 KSharedConfigPtr m_config; 0041 0042 // 0043 // general 0044 QString name() const override 0045 { 0046 return m_name; 0047 } 0048 bool supportsDisableEvents() const override 0049 { 0050 return m_supportsDisableEvents.avail && m_supportsDisableEvents.val; 0051 } 0052 bool isEnabled() const override 0053 { 0054 return !m_enabled.val; 0055 } 0056 void setEnabled(bool set) override 0057 { 0058 m_enabled.set(!set); 0059 } 0060 // 0061 // Tapping 0062 void setLmrTapButtonMap(bool set) override 0063 { 0064 m_lrmTapButtonMap.set(!set); 0065 m_lmrTapButtonMap.set(set); 0066 } 0067 // 0068 // advanced 0069 bool supportsLeftHanded() const override 0070 { 0071 return m_leftHanded.avail; 0072 } 0073 bool supportsDisableEventsOnExternalMouse() const override 0074 { 0075 return m_supportsDisableEventsOnExternalMouse.avail && m_supportsDisableEventsOnExternalMouse.val; 0076 } 0077 bool supportsDisableWhileTyping() const override 0078 { 0079 return m_disableWhileTyping.avail; 0080 } 0081 bool supportsMiddleEmulation() const override 0082 { 0083 return m_middleEmulation.avail; 0084 } 0085 // 0086 // acceleration speed and profile 0087 bool supportsPointerAcceleration() const override 0088 { 0089 return m_pointerAcceleration.avail; 0090 } 0091 bool supportsPointerAccelerationProfileFlat() const override 0092 { 0093 return m_supportsPointerAccelerationProfileFlat.avail && m_supportsPointerAccelerationProfileFlat.val; 0094 } 0095 bool supportsPointerAccelerationProfileAdaptive() const override 0096 { 0097 return m_supportsPointerAccelerationProfileAdaptive.avail && m_supportsPointerAccelerationProfileAdaptive.val; 0098 } 0099 // 0100 // scrolling 0101 bool supportsNaturalScroll() const override 0102 { 0103 return m_naturalScroll.avail; 0104 } 0105 bool supportsHorizontalScrolling() const override 0106 { 0107 return true; 0108 } 0109 bool supportsScrollTwoFinger() const override 0110 { 0111 return m_supportsScrollTwoFinger.avail && m_supportsScrollTwoFinger.val; 0112 } 0113 bool supportsScrollEdge() const override 0114 { 0115 return m_supportsScrollEdge.avail && m_supportsScrollEdge.val; 0116 } 0117 bool supportsScrollOnButtonDown() const override 0118 { 0119 return m_supportsScrollOnButtonDown.avail && m_supportsScrollOnButtonDown.val; 0120 } 0121 // 0122 // click method 0123 bool supportsClickMethodAreas() const override 0124 { 0125 return m_supportsClickMethodAreas.avail && m_supportsClickMethodAreas.val; 0126 } 0127 bool supportsClickMethodClickfinger() const override 0128 { 0129 return m_supportsClickMethodClickfinger.avail && m_supportsClickMethodClickfinger.val; 0130 } 0131 0132 bool supportsScrollFactor() const override 0133 { 0134 return false; 0135 } 0136 0137 // Tapping 0138 Prop<bool> m_lrmTapButtonMapEnabledByDefault = PropBool("lrmTapButtonMapEnabledByDefault"); 0139 Prop<bool> m_lrmTapButtonMap = PropBool("lrmTapButtonMap"); 0140 // 0141 // advanced 0142 Prop<bool> m_disableEventsOnExternalMouse = PropBool("disableEventsOnExternalMouse"); 0143 Prop<bool> m_disableEventsOnExternalMouseDefault = PropBool("disableEventsOnExternalMouseDefault"); 0144 0145 QString m_name; 0146 };