1 /* 2 SPDX-FileCopyrightText: 2017 Roman Gilg <subdiff@gmail.com> 3 SPDX-FileCopyrightText: 2019 Atul Bisht <atulbisht26@gmail.com> 4 5 SPDX-License-Identifier: GPL-2.0-or-later 6 */ 7 8 #ifndef LIBINPUTCOMMON_H 9 #define LIBINPUTCOMMON_H 10 11 #include <QObject> 12 #include <QVariant> 13 14 namespace 15 { 16 template<typename T> valueLoaderPart(QVariant const & reply)17inline T valueLoaderPart(QVariant const &reply) 18 { 19 Q_UNUSED(reply); 20 return T(); 21 } 22 23 template<> valueLoaderPart(QVariant const & reply)24inline bool valueLoaderPart(QVariant const &reply) 25 { 26 return reply.toBool(); 27 } 28 29 template<> valueLoaderPart(QVariant const & reply)30inline int valueLoaderPart(QVariant const &reply) 31 { 32 return reply.toInt(); 33 } 34 35 template<> valueLoaderPart(QVariant const & reply)36inline quint32 valueLoaderPart(QVariant const &reply) 37 { 38 return reply.toInt(); 39 } 40 41 template<> valueLoaderPart(QVariant const & reply)42inline qreal valueLoaderPart(QVariant const &reply) 43 { 44 return reply.toReal(); 45 } 46 47 template<> valueLoaderPart(QVariant const & reply)48inline QString valueLoaderPart(QVariant const &reply) 49 { 50 return reply.toString(); 51 } 52 53 template<> valueLoaderPart(QVariant const & reply)54inline Qt::MouseButtons valueLoaderPart(QVariant const &reply) 55 { 56 return static_cast<Qt::MouseButtons>(reply.toInt()); 57 } 58 } 59 60 class LibinputCommon : public QObject 61 { 62 Q_OBJECT 63 64 // 65 // general Q_PROPERTY(QString name READ name CONSTANT)66 Q_PROPERTY(QString name READ name CONSTANT) 67 Q_PROPERTY(bool supportsDisableEvents READ supportsDisableEvents CONSTANT) 68 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) 69 70 // 71 // advanced 72 Q_PROPERTY(Qt::MouseButtons supportedButtons READ supportedButtons CONSTANT) 73 74 Q_PROPERTY(bool supportsLeftHanded READ supportsLeftHanded CONSTANT) 75 Q_PROPERTY(bool leftHandedEnabledByDefault READ leftHandedEnabledByDefault CONSTANT) 76 Q_PROPERTY(bool leftHanded READ isLeftHanded WRITE setLeftHanded NOTIFY leftHandedChanged) 77 78 Q_PROPERTY(bool supportsDisableEventsOnExternalMouse READ supportsDisableEventsOnExternalMouse CONSTANT) 79 80 Q_PROPERTY(bool supportsDisableWhileTyping READ supportsDisableWhileTyping CONSTANT) 81 Q_PROPERTY(bool disableWhileTypingEnabledByDefault READ disableWhileTypingEnabledByDefault CONSTANT) 82 Q_PROPERTY(bool disableWhileTyping READ isDisableWhileTyping WRITE setDisableWhileTyping NOTIFY disableWhileTypingChanged) 83 84 Q_PROPERTY(bool supportsMiddleEmulation READ supportsMiddleEmulation CONSTANT) 85 Q_PROPERTY(bool middleEmulationEnabledByDefault READ middleEmulationEnabledByDefault CONSTANT) 86 Q_PROPERTY(bool middleEmulation READ isMiddleEmulation WRITE setMiddleEmulation NOTIFY middleEmulationChanged) 87 88 // 89 // acceleration speed and profile 90 Q_PROPERTY(bool supportsPointerAcceleration READ supportsPointerAcceleration CONSTANT) 91 Q_PROPERTY(qreal pointerAcceleration READ pointerAcceleration WRITE setPointerAcceleration NOTIFY pointerAccelerationChanged) 92 93 Q_PROPERTY(bool supportsPointerAccelerationProfileFlat READ supportsPointerAccelerationProfileFlat CONSTANT) 94 Q_PROPERTY(bool defaultPointerAccelerationProfileFlat READ defaultPointerAccelerationProfileFlat CONSTANT) 95 Q_PROPERTY(bool pointerAccelerationProfileFlat READ pointerAccelerationProfileFlat WRITE setPointerAccelerationProfileFlat NOTIFY 96 pointerAccelerationProfileChanged) 97 98 Q_PROPERTY(bool supportsPointerAccelerationProfileAdaptive READ supportsPointerAccelerationProfileAdaptive CONSTANT) 99 Q_PROPERTY(bool defaultPointerAccelerationProfileAdaptive READ defaultPointerAccelerationProfileAdaptive CONSTANT) 100 Q_PROPERTY(bool pointerAccelerationProfileAdaptive READ pointerAccelerationProfileAdaptive WRITE setPointerAccelerationProfileAdaptive NOTIFY 101 pointerAccelerationProfileChanged) 102 103 // 104 // tapping 105 Q_PROPERTY(int tapFingerCount READ tapFingerCount CONSTANT) 106 Q_PROPERTY(bool tapToClickEnabledByDefault READ tapToClickEnabledByDefault CONSTANT) 107 Q_PROPERTY(bool tapToClick READ isTapToClick WRITE setTapToClick NOTIFY tapToClickChanged) 108 109 Q_PROPERTY(bool supportsLmrTapButtonMap READ supportsLmrTapButtonMap CONSTANT) 110 Q_PROPERTY(bool lmrTapButtonMapEnabledByDefault READ lmrTapButtonMapEnabledByDefault CONSTANT) 111 Q_PROPERTY(bool lmrTapButtonMap READ lmrTapButtonMap WRITE setLmrTapButtonMap NOTIFY lmrTapButtonMapChanged) 112 113 Q_PROPERTY(bool tapAndDragEnabledByDefault READ tapAndDragEnabledByDefault CONSTANT) 114 Q_PROPERTY(bool tapAndDrag READ isTapAndDrag WRITE setTapAndDrag NOTIFY tapAndDragChanged) 115 116 Q_PROPERTY(bool tapDragLockEnabledByDefault READ tapDragLockEnabledByDefault CONSTANT) 117 Q_PROPERTY(bool tapDragLock READ isTapDragLock WRITE setTapDragLock NOTIFY tapDragLockChanged) 118 119 // 120 // scrolling 121 Q_PROPERTY(bool supportsNaturalScroll READ supportsNaturalScroll CONSTANT) 122 Q_PROPERTY(bool naturalScrollEnabledByDefault READ naturalScrollEnabledByDefault CONSTANT) 123 Q_PROPERTY(bool naturalScroll READ isNaturalScroll WRITE setNaturalScroll NOTIFY naturalScrollChanged) 124 125 Q_PROPERTY(bool supportsHorizontalScrolling READ supportsHorizontalScrolling CONSTANT) 126 Q_PROPERTY(bool horizontalScrollingByDefault READ horizontalScrollingByDefault CONSTANT) 127 Q_PROPERTY(bool horizontalScrolling READ horizontalScrolling WRITE setHorizontalScrolling NOTIFY horizontalScrollingChanged) 128 129 Q_PROPERTY(bool supportsScrollTwoFinger READ supportsScrollTwoFinger CONSTANT) 130 Q_PROPERTY(bool scrollTwoFingerEnabledByDefault READ scrollTwoFingerEnabledByDefault CONSTANT) 131 Q_PROPERTY(bool scrollTwoFinger READ isScrollTwoFinger WRITE setScrollTwoFinger NOTIFY scrollMethodChanged) 132 133 Q_PROPERTY(bool supportsScrollEdge READ supportsScrollEdge CONSTANT) 134 Q_PROPERTY(bool scrollEdgeEnabledByDefault READ scrollEdgeEnabledByDefault CONSTANT) 135 Q_PROPERTY(bool scrollEdge READ isScrollEdge WRITE setScrollEdge NOTIFY scrollMethodChanged) 136 137 Q_PROPERTY(bool supportsScrollOnButtonDown READ supportsScrollOnButtonDown CONSTANT) 138 Q_PROPERTY(bool scrollOnButtonDownEnabledByDefault READ scrollOnButtonDownEnabledByDefault CONSTANT) 139 Q_PROPERTY(bool scrollOnButtonDown READ isScrollOnButtonDown WRITE setScrollOnButtonDown NOTIFY scrollMethodChanged) 140 141 Q_PROPERTY(quint32 defaultScrollButton READ defaultScrollButton CONSTANT) 142 Q_PROPERTY(quint32 scrollButton READ scrollButton WRITE setScrollButton NOTIFY scrollButtonChanged) 143 144 // Click Methods 145 Q_PROPERTY(bool supportsClickMethodAreas READ supportsClickMethodAreas CONSTANT) 146 Q_PROPERTY(bool defaultClickMethodAreas READ defaultClickMethodAreas CONSTANT) 147 Q_PROPERTY(bool clickMethodAreas READ isClickMethodAreas WRITE setClickMethodAreas NOTIFY clickMethodChanged) 148 149 Q_PROPERTY(bool supportsClickMethodClickfinger READ supportsClickMethodClickfinger CONSTANT) 150 Q_PROPERTY(bool defaultClickMethodClickfinger READ defaultClickMethodClickfinger CONSTANT) 151 Q_PROPERTY(bool clickMethodClickfinger READ isClickMethodClickfinger WRITE setClickMethodClickfinger NOTIFY clickMethodChanged) 152 153 Q_PROPERTY(bool supportsScrollFactor READ supportsScrollFactor CONSTANT) 154 public: 155 LibinputCommon() 156 { 157 } ~LibinputCommon()158 virtual ~LibinputCommon() 159 { 160 } 161 162 virtual QString name() const = 0; 163 virtual bool supportsDisableEvents() const = 0; 164 virtual bool isEnabled() const = 0; 165 virtual void setEnabled(bool set) = 0; 166 167 // 168 // advanced supportedButtons()169 Qt::MouseButtons supportedButtons() const 170 { 171 return m_supportedButtons.val; 172 } 173 174 virtual bool supportsLeftHanded() const = 0; leftHandedEnabledByDefault()175 bool leftHandedEnabledByDefault() const 176 { 177 return m_leftHandedEnabledByDefault.val; 178 } isLeftHanded()179 bool isLeftHanded() const 180 { 181 return m_leftHanded.val; 182 } setLeftHanded(bool set)183 void setLeftHanded(bool set) 184 { 185 m_leftHanded.set(set); 186 } 187 188 virtual bool supportsDisableEventsOnExternalMouse() const = 0; 189 190 virtual bool supportsDisableWhileTyping() const = 0; disableWhileTypingEnabledByDefault()191 bool disableWhileTypingEnabledByDefault() const 192 { 193 return m_disableWhileTypingEnabledByDefault.val; 194 } isDisableWhileTyping()195 bool isDisableWhileTyping() const 196 { 197 return m_disableWhileTyping.val; 198 } setDisableWhileTyping(bool set)199 void setDisableWhileTyping(bool set) 200 { 201 m_disableWhileTyping.set(set); 202 } 203 204 virtual bool supportsMiddleEmulation() const = 0; middleEmulationEnabledByDefault()205 bool middleEmulationEnabledByDefault() const 206 { 207 return m_middleEmulationEnabledByDefault.val; 208 } isMiddleEmulation()209 bool isMiddleEmulation() const 210 { 211 return m_middleEmulation.val; 212 } setMiddleEmulation(bool set)213 void setMiddleEmulation(bool set) 214 { 215 m_middleEmulation.set(set); 216 } 217 218 virtual bool supportsPointerAcceleration() const = 0; pointerAcceleration()219 qreal pointerAcceleration() const 220 { 221 return m_pointerAcceleration.val; 222 } setPointerAcceleration(qreal acceleration)223 void setPointerAcceleration(qreal acceleration) 224 { 225 m_pointerAcceleration.set(acceleration); 226 } 227 228 virtual bool supportsPointerAccelerationProfileFlat() const = 0; defaultPointerAccelerationProfileFlat()229 bool defaultPointerAccelerationProfileFlat() const 230 { 231 return m_defaultPointerAccelerationProfileFlat.val; 232 } pointerAccelerationProfileFlat()233 bool pointerAccelerationProfileFlat() const 234 { 235 return m_pointerAccelerationProfileFlat.val; 236 } setPointerAccelerationProfileFlat(bool set)237 void setPointerAccelerationProfileFlat(bool set) 238 { 239 m_pointerAccelerationProfileFlat.set(set); 240 } 241 242 virtual bool supportsPointerAccelerationProfileAdaptive() const = 0; defaultPointerAccelerationProfileAdaptive()243 bool defaultPointerAccelerationProfileAdaptive() const 244 { 245 return m_defaultPointerAccelerationProfileAdaptive.val; 246 } pointerAccelerationProfileAdaptive()247 bool pointerAccelerationProfileAdaptive() const 248 { 249 return m_pointerAccelerationProfileAdaptive.val; 250 } setPointerAccelerationProfileAdaptive(bool set)251 void setPointerAccelerationProfileAdaptive(bool set) 252 { 253 m_pointerAccelerationProfileAdaptive.set(set); 254 } 255 256 // 257 // scrolling 258 virtual bool supportsNaturalScroll() const = 0; naturalScrollEnabledByDefault()259 bool naturalScrollEnabledByDefault() const 260 { 261 return m_naturalScrollEnabledByDefault.val; 262 } isNaturalScroll()263 bool isNaturalScroll() const 264 { 265 return m_naturalScroll.val; 266 } setNaturalScroll(bool set)267 void setNaturalScroll(bool set) 268 { 269 m_naturalScroll.set(set); 270 } 271 272 virtual bool supportsHorizontalScrolling() const = 0; horizontalScrollingByDefault()273 bool horizontalScrollingByDefault() const 274 { 275 return true; 276 } horizontalScrolling()277 bool horizontalScrolling() const 278 { 279 return m_horizontalScrolling.val; 280 } setHorizontalScrolling(bool set)281 void setHorizontalScrolling(bool set) 282 { 283 m_horizontalScrolling.set(set); 284 } 285 286 virtual bool supportsScrollTwoFinger() const = 0; scrollTwoFingerEnabledByDefault()287 bool scrollTwoFingerEnabledByDefault() const 288 { 289 return m_scrollTwoFingerEnabledByDefault.val; 290 } isScrollTwoFinger()291 bool isScrollTwoFinger() const 292 { 293 return m_isScrollTwoFinger.val; 294 } setScrollTwoFinger(bool set)295 void setScrollTwoFinger(bool set) 296 { 297 m_isScrollTwoFinger.set(set); 298 } 299 300 virtual bool supportsScrollEdge() const = 0; scrollEdgeEnabledByDefault()301 bool scrollEdgeEnabledByDefault() const 302 { 303 return m_scrollEdgeEnabledByDefault.val; 304 } isScrollEdge()305 bool isScrollEdge() const 306 { 307 return m_isScrollEdge.val; 308 } setScrollEdge(bool set)309 void setScrollEdge(bool set) 310 { 311 m_isScrollEdge.set(set); 312 } 313 314 virtual bool supportsScrollOnButtonDown() const = 0; scrollOnButtonDownEnabledByDefault()315 bool scrollOnButtonDownEnabledByDefault() const 316 { 317 return m_scrollOnButtonDownEnabledByDefault.val; 318 } isScrollOnButtonDown()319 bool isScrollOnButtonDown() const 320 { 321 return m_isScrollOnButtonDown.val; 322 } setScrollOnButtonDown(bool set)323 void setScrollOnButtonDown(bool set) 324 { 325 m_isScrollOnButtonDown.set(set); 326 } 327 defaultScrollButton()328 quint32 defaultScrollButton() const 329 { 330 return m_defaultScrollButton.val; 331 } scrollButton()332 quint32 scrollButton() const 333 { 334 return m_scrollButton.val; 335 } setScrollButton(quint32 button)336 void setScrollButton(quint32 button) 337 { 338 m_scrollButton.set(button); 339 } 340 341 // 342 // tapping tapFingerCount()343 int tapFingerCount() const 344 { 345 return m_tapFingerCount.val; 346 } tapToClickEnabledByDefault()347 bool tapToClickEnabledByDefault() const 348 { 349 return m_tapToClickEnabledByDefault.val; 350 } isTapToClick()351 bool isTapToClick() const 352 { 353 return m_tapToClick.val; 354 } setTapToClick(bool set)355 void setTapToClick(bool set) 356 { 357 m_tapToClick.set(set); 358 } 359 supportsLmrTapButtonMap()360 bool supportsLmrTapButtonMap() const 361 { 362 return m_tapFingerCount.val > 1; 363 } lmrTapButtonMapEnabledByDefault()364 bool lmrTapButtonMapEnabledByDefault() const 365 { 366 return m_lmrTapButtonMapEnabledByDefault.val; 367 } lmrTapButtonMap()368 bool lmrTapButtonMap() const 369 { 370 return m_lmrTapButtonMap.val; 371 } 372 virtual void setLmrTapButtonMap(bool set) = 0; 373 tapAndDragEnabledByDefault()374 bool tapAndDragEnabledByDefault() const 375 { 376 return m_tapAndDragEnabledByDefault.val; 377 } isTapAndDrag()378 bool isTapAndDrag() const 379 { 380 return m_tapAndDrag.val; 381 } setTapAndDrag(bool set)382 void setTapAndDrag(bool set) 383 { 384 m_tapAndDrag.set(set); 385 } 386 tapDragLockEnabledByDefault()387 bool tapDragLockEnabledByDefault() const 388 { 389 return m_tapDragLockEnabledByDefault.val; 390 } isTapDragLock()391 bool isTapDragLock() const 392 { 393 return m_tapDragLock.val; 394 } setTapDragLock(bool set)395 void setTapDragLock(bool set) 396 { 397 m_tapDragLock.set(set); 398 } 399 400 // 401 // click method 402 virtual bool supportsClickMethodAreas() const = 0; defaultClickMethodAreas()403 bool defaultClickMethodAreas() const 404 { 405 return m_defaultClickMethodAreas.val; 406 } isClickMethodAreas()407 bool isClickMethodAreas() const 408 { 409 return m_clickMethodAreas.val; 410 } setClickMethodAreas(bool set)411 void setClickMethodAreas(bool set) 412 { 413 m_clickMethodAreas.set(set); 414 } 415 416 virtual bool supportsClickMethodClickfinger() const = 0; defaultClickMethodClickfinger()417 bool defaultClickMethodClickfinger() const 418 { 419 return m_defaultClickMethodClickfinger.val; 420 } isClickMethodClickfinger()421 bool isClickMethodClickfinger() const 422 { 423 return m_clickMethodClickfinger.val; 424 } setClickMethodClickfinger(bool set)425 void setClickMethodClickfinger(bool set) 426 { 427 m_clickMethodClickfinger.set(set); 428 } 429 430 virtual bool supportsScrollFactor() const = 0; 431 432 Q_SIGNALS: 433 void enabledChanged(); 434 // Tapping 435 void tapToClickChanged(); 436 void lmrTapButtonMapChanged(); 437 void tapAndDragChanged(); 438 void tapDragLockChanged(); 439 // Advanced 440 void leftHandedChanged(); 441 void disableWhileTypingChanged(); 442 void middleEmulationChanged(); 443 // acceleration speed and profile 444 void pointerAccelerationChanged(); 445 void pointerAccelerationProfileChanged(); 446 // scrolling 447 void naturalScrollChanged(); 448 void horizontalScrollingChanged(); 449 void scrollMethodChanged(); 450 void scrollButtonChanged(); 451 // click methods 452 void clickMethodChanged(); 453 454 protected: 455 template<typename T> 456 struct Prop { PropProp457 explicit Prop(const QByteArray &name) 458 : name(name) 459 { 460 } 461 setProp462 void set(T newVal) 463 { 464 if (avail && val != newVal) { 465 val = newVal; 466 } 467 } setProp468 void set(const Prop<T> &p) 469 { 470 if (avail && val != p.val) { 471 val = p.val; 472 } 473 } changedProp474 bool changed() const 475 { 476 return avail && (old != val); 477 } 478 479 // In wayland, name will be dbus name 480 QByteArray name; 481 bool avail; 482 T old; 483 T val; 484 }; 485 486 // 487 // general 488 Prop<bool> m_supportsDisableEvents = Prop<bool>("supportsDisableEvents"); 489 Prop<bool> m_enabledDefault = Prop<bool>("enabledDefault"); 490 Prop<bool> m_enabled = Prop<bool>("enabled"); 491 492 // 493 // advanced 494 Prop<Qt::MouseButtons> m_supportedButtons = Prop<Qt::MouseButtons>("supportedButtons"); 495 496 Prop<bool> m_leftHandedEnabledByDefault = Prop<bool>("leftHandedEnabledByDefault"); 497 Prop<bool> m_leftHanded = Prop<bool>("leftHanded"); 498 499 Prop<bool> m_supportsDisableEventsOnExternalMouse = Prop<bool>("supportsDisableEventsOnExternalMouse"); 500 501 Prop<bool> m_disableWhileTypingEnabledByDefault = Prop<bool>("disableWhileTypingEnabledByDefault"); 502 Prop<bool> m_disableWhileTyping = Prop<bool>("disableWhileTyping"); 503 504 Prop<bool> m_middleEmulationEnabledByDefault = Prop<bool>("middleEmulationEnabledByDefault"); 505 Prop<bool> m_middleEmulation = Prop<bool>("middleEmulation"); 506 507 // 508 // acceleration speed and profile 509 Prop<qreal> m_defaultPointerAcceleration = Prop<qreal>("defaultPointerAcceleration"); 510 Prop<qreal> m_pointerAcceleration = Prop<qreal>("pointerAcceleration"); 511 512 Prop<bool> m_supportsPointerAccelerationProfileFlat = Prop<bool>("supportsPointerAccelerationProfileFlat"); 513 Prop<bool> m_defaultPointerAccelerationProfileFlat = Prop<bool>("defaultPointerAccelerationProfileFlat"); 514 Prop<bool> m_pointerAccelerationProfileFlat = Prop<bool>("pointerAccelerationProfileFlat"); 515 516 Prop<bool> m_supportsPointerAccelerationProfileAdaptive = Prop<bool>("supportsPointerAccelerationProfileAdaptive"); 517 Prop<bool> m_defaultPointerAccelerationProfileAdaptive = Prop<bool>("defaultPointerAccelerationProfileAdaptive"); 518 Prop<bool> m_pointerAccelerationProfileAdaptive = Prop<bool>("pointerAccelerationProfileAdaptive"); 519 520 // 521 // tapping 522 Prop<int> m_tapFingerCount = Prop<int>("tapFingerCount"); 523 Prop<bool> m_tapToClickEnabledByDefault = Prop<bool>("tapToClickEnabledByDefault"); 524 Prop<bool> m_tapToClick = Prop<bool>("tapToClick"); 525 526 Prop<bool> m_lmrTapButtonMapEnabledByDefault = Prop<bool>("lmrTapButtonMapEnabledByDefault"); 527 Prop<bool> m_lmrTapButtonMap = Prop<bool>("lmrTapButtonMap"); 528 529 Prop<bool> m_tapAndDragEnabledByDefault = Prop<bool>("tapAndDragEnabledByDefault"); 530 Prop<bool> m_tapAndDrag = Prop<bool>("tapAndDrag"); 531 Prop<bool> m_tapDragLockEnabledByDefault = Prop<bool>("tapDragLockEnabledByDefault"); 532 Prop<bool> m_tapDragLock = Prop<bool>("tapDragLock"); 533 534 // 535 // scrolling 536 Prop<bool> m_naturalScrollEnabledByDefault = Prop<bool>("naturalScrollEnabledByDefault"); 537 Prop<bool> m_naturalScroll = Prop<bool>("naturalScroll"); 538 539 Prop<bool> m_horizontalScrolling = Prop<bool>("horizontalScrolling"); 540 541 Prop<bool> m_supportsScrollTwoFinger = Prop<bool>("supportsScrollTwoFinger"); 542 Prop<bool> m_scrollTwoFingerEnabledByDefault = Prop<bool>("scrollTwoFingerEnabledByDefault"); 543 Prop<bool> m_isScrollTwoFinger = Prop<bool>("scrollTwoFinger"); 544 545 Prop<bool> m_supportsScrollEdge = Prop<bool>("supportsScrollEdge"); 546 Prop<bool> m_scrollEdgeEnabledByDefault = Prop<bool>("scrollEdgeEnabledByDefault"); 547 Prop<bool> m_isScrollEdge = Prop<bool>("scrollEdge"); 548 549 Prop<bool> m_supportsScrollOnButtonDown = Prop<bool>("supportsScrollOnButtonDown"); 550 Prop<bool> m_scrollOnButtonDownEnabledByDefault = Prop<bool>("scrollOnButtonDownEnabledByDefault"); 551 Prop<bool> m_isScrollOnButtonDown = Prop<bool>("scrollOnButtonDown"); 552 553 Prop<quint32> m_defaultScrollButton = Prop<quint32>("defaultScrollButton"); 554 Prop<quint32> m_scrollButton = Prop<quint32>("scrollButton"); 555 556 // Click Method 557 Prop<bool> m_supportsClickMethodAreas = Prop<bool>("supportsClickMethodAreas"); 558 Prop<bool> m_defaultClickMethodAreas = Prop<bool>("defaultClickMethodAreas"); 559 Prop<bool> m_clickMethodAreas = Prop<bool>("clickMethodAreas"); 560 561 Prop<bool> m_supportsClickMethodClickfinger = Prop<bool>("supportsClickMethodClickfinger"); 562 Prop<bool> m_defaultClickMethodClickfinger = Prop<bool>("defaultClickMethodClickfinger"); 563 Prop<bool> m_clickMethodClickfinger = Prop<bool>("clickMethodClickfinger"); 564 }; 565 566 #endif // LIBINPUTCOMMON_H 567