36 Q_CLASSINFO(
"D-Bus Interface",
"org.kde.KWin.InputDevice")
39 Q_PROPERTY(
bool keyboard READ isKeyboard CONSTANT)
40 Q_PROPERTY(
bool alphaNumericKeyboard READ isAlphaNumericKeyboard CONSTANT)
41 Q_PROPERTY(
bool pointer READ isPointer CONSTANT)
42 Q_PROPERTY(
bool touchpad READ isTouchpad CONSTANT)
43 Q_PROPERTY(
bool touch READ isTouch CONSTANT)
44 Q_PROPERTY(
bool tabletTool READ isTabletTool CONSTANT)
45 Q_PROPERTY(
bool tabletPad READ isTabletPad CONSTANT)
46 Q_PROPERTY(
bool gestureSupport READ supportsGesture CONSTANT)
47 Q_PROPERTY(QString name READ name CONSTANT)
48 Q_PROPERTY(QString sysName READ sysName CONSTANT)
49 Q_PROPERTY(QString outputName READ outputName WRITE setOutputName NOTIFY outputNameChanged)
50 Q_PROPERTY(QSizeF size READ size CONSTANT)
51 Q_PROPERTY(quint32 product READ product CONSTANT)
52 Q_PROPERTY(quint32 vendor READ vendor CONSTANT)
53 Q_PROPERTY(
bool supportsDisableEvents READ supportsDisableEvents CONSTANT)
54 Q_PROPERTY(
bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
55 Q_PROPERTY(
bool enabledByDefault READ isEnabledByDefault CONSTANT)
58 Q_PROPERTY(
int supportedButtons READ supportedButtons CONSTANT)
59 Q_PROPERTY(
bool supportsCalibrationMatrix READ supportsCalibrationMatrix CONSTANT)
60 Q_PROPERTY(QMatrix4x4 defaultCalibrationMatrix READ defaultCalibrationMatrix CONSTANT)
61 Q_PROPERTY(QMatrix4x4 calibrationMatrix READ calibrationMatrix WRITE setCalibrationMatrix NOTIFY calibrationMatrixChanged)
62 Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged)
63 Q_PROPERTY(
int orientationDBus READ orientation WRITE setOrientationDBus NOTIFY orientationChanged)
65 Q_PROPERTY(
bool supportsLeftHanded READ supportsLeftHanded CONSTANT)
66 Q_PROPERTY(
bool leftHandedEnabledByDefault READ leftHandedEnabledByDefault CONSTANT)
67 Q_PROPERTY(
bool leftHanded READ isLeftHanded WRITE setLeftHanded NOTIFY leftHandedChanged)
69 Q_PROPERTY(
bool supportsDisableEventsOnExternalMouse READ supportsDisableEventsOnExternalMouse CONSTANT)
71 Q_PROPERTY(
bool supportsDisableWhileTyping READ supportsDisableWhileTyping CONSTANT)
72 Q_PROPERTY(
bool disableWhileTypingEnabledByDefault READ disableWhileTypingEnabledByDefault CONSTANT)
73 Q_PROPERTY(
bool disableWhileTyping READ isDisableWhileTyping WRITE setDisableWhileTyping NOTIFY disableWhileTypingChanged)
76 Q_PROPERTY(
bool supportsPointerAcceleration READ supportsPointerAcceleration CONSTANT)
77 Q_PROPERTY(qreal defaultPointerAcceleration READ defaultPointerAcceleration CONSTANT)
78 Q_PROPERTY(qreal pointerAcceleration READ pointerAcceleration WRITE setPointerAcceleration NOTIFY pointerAccelerationChanged)
80 Q_PROPERTY(
bool supportsPointerAccelerationProfileFlat READ supportsPointerAccelerationProfileFlat CONSTANT)
81 Q_PROPERTY(
bool defaultPointerAccelerationProfileFlat READ defaultPointerAccelerationProfileFlat CONSTANT)
82 Q_PROPERTY(
bool pointerAccelerationProfileFlat READ pointerAccelerationProfileFlat WRITE setPointerAccelerationProfileFlat NOTIFY pointerAccelerationProfileChanged)
84 Q_PROPERTY(
bool supportsPointerAccelerationProfileAdaptive READ supportsPointerAccelerationProfileAdaptive CONSTANT)
85 Q_PROPERTY(
bool defaultPointerAccelerationProfileAdaptive READ defaultPointerAccelerationProfileAdaptive CONSTANT)
86 Q_PROPERTY(
bool pointerAccelerationProfileAdaptive READ pointerAccelerationProfileAdaptive WRITE setPointerAccelerationProfileAdaptive NOTIFY pointerAccelerationProfileChanged)
89 Q_PROPERTY(
int tapFingerCount READ tapFingerCount CONSTANT)
90 Q_PROPERTY(
bool tapToClickEnabledByDefault READ tapToClickEnabledByDefault CONSTANT)
91 Q_PROPERTY(
bool tapToClick READ isTapToClick WRITE setTapToClick NOTIFY tapToClickChanged)
93 Q_PROPERTY(
bool supportsLmrTapButtonMap READ supportsLmrTapButtonMap CONSTANT)
94 Q_PROPERTY(
bool lmrTapButtonMapEnabledByDefault READ lmrTapButtonMapEnabledByDefault CONSTANT)
95 Q_PROPERTY(
bool lmrTapButtonMap READ lmrTapButtonMap WRITE setLmrTapButtonMap NOTIFY tapButtonMapChanged)
97 Q_PROPERTY(
bool tapAndDragEnabledByDefault READ tapAndDragEnabledByDefault CONSTANT)
98 Q_PROPERTY(
bool tapAndDrag READ isTapAndDrag WRITE setTapAndDrag NOTIFY tapAndDragChanged)
99 Q_PROPERTY(
bool tapDragLockEnabledByDefault READ tapDragLockEnabledByDefault CONSTANT)
100 Q_PROPERTY(
bool tapDragLock READ isTapDragLock WRITE setTapDragLock NOTIFY tapDragLockChanged)
102 Q_PROPERTY(
bool supportsMiddleEmulation READ supportsMiddleEmulation CONSTANT)
103 Q_PROPERTY(
bool middleEmulationEnabledByDefault READ middleEmulationEnabledByDefault CONSTANT)
104 Q_PROPERTY(
bool middleEmulation READ isMiddleEmulation WRITE setMiddleEmulation NOTIFY middleEmulationChanged)
107 Q_PROPERTY(
bool supportsNaturalScroll READ supportsNaturalScroll CONSTANT)
108 Q_PROPERTY(
bool naturalScrollEnabledByDefault READ naturalScrollEnabledByDefault CONSTANT)
109 Q_PROPERTY(
bool naturalScroll READ isNaturalScroll WRITE setNaturalScroll NOTIFY naturalScrollChanged)
111 Q_PROPERTY(
bool supportsScrollTwoFinger READ supportsScrollTwoFinger CONSTANT)
112 Q_PROPERTY(
bool scrollTwoFingerEnabledByDefault READ scrollTwoFingerEnabledByDefault CONSTANT)
113 Q_PROPERTY(
bool scrollTwoFinger READ isScrollTwoFinger WRITE setScrollTwoFinger NOTIFY scrollMethodChanged)
115 Q_PROPERTY(
bool supportsScrollEdge READ supportsScrollEdge CONSTANT)
116 Q_PROPERTY(
bool scrollEdgeEnabledByDefault READ scrollEdgeEnabledByDefault CONSTANT)
117 Q_PROPERTY(
bool scrollEdge READ isScrollEdge WRITE setScrollEdge NOTIFY scrollMethodChanged)
119 Q_PROPERTY(
bool supportsScrollOnButtonDown READ supportsScrollOnButtonDown CONSTANT)
120 Q_PROPERTY(
bool scrollOnButtonDownEnabledByDefault READ scrollOnButtonDownEnabledByDefault CONSTANT)
121 Q_PROPERTY(quint32 defaultScrollButton READ defaultScrollButton CONSTANT)
122 Q_PROPERTY(
bool scrollOnButtonDown READ isScrollOnButtonDown WRITE setScrollOnButtonDown NOTIFY scrollMethodChanged)
123 Q_PROPERTY(quint32 scrollButton READ scrollButton WRITE setScrollButton NOTIFY scrollButtonChanged)
125 Q_PROPERTY(qreal scrollFactor READ scrollFactor WRITE setScrollFactor NOTIFY scrollFactorChanged)
128 Q_PROPERTY(
bool switchDevice READ isSwitch CONSTANT)
129 Q_PROPERTY(
bool lidSwitch READ isLidSwitch CONSTANT)
130 Q_PROPERTY(
bool tabletModeSwitch READ isTabletModeSwitch CONSTANT)
133 Q_PROPERTY(
bool supportsClickMethodAreas READ supportsClickMethodAreas CONSTANT)
134 Q_PROPERTY(
bool defaultClickMethodAreas READ defaultClickMethodAreas CONSTANT)
135 Q_PROPERTY(
bool clickMethodAreas READ isClickMethodAreas WRITE setClickMethodAreas NOTIFY clickMethodChanged)
137 Q_PROPERTY(
bool supportsClickMethodClickfinger READ supportsClickMethodClickfinger CONSTANT)
138 Q_PROPERTY(
bool defaultClickMethodClickfinger READ defaultClickMethodClickfinger CONSTANT)
139 Q_PROPERTY(
bool clickMethodClickfinger READ isClickMethodClickfinger WRITE setClickMethodClickfinger NOTIFY clickMethodChanged)
141 Q_PROPERTY(
bool supportsOutputArea READ supportsOutputArea CONSTANT)
142 Q_PROPERTY(QRectF defaultOutputArea READ defaultOutputArea CONSTANT)
143 Q_PROPERTY(QRectF outputArea READ outputArea WRITE setOutputArea NOTIFY outputAreaChanged)
144 Q_PROPERTY(
bool defaultMapToWorkspace READ defaultMapToWorkspace CONSTANT)
145 Q_PROPERTY(
bool mapToWorkspace READ isMapToWorkspace WRITE setMapToWorkspace NOTIFY mapToWorkspaceChanged)
151 bool isKeyboard()
const override
151 bool isKeyboard()
const override {
…}
160 return m_alphaNumericKeyboard;
171 !(m_keyboard || m_touch || m_tabletPad || m_tabletTool) &&
173 (m_tapFingerCount > 0 || m_supportsDisableWhileTyping || m_supportsDisableEventsOnExternalMouse);
189 return m_supportsGesture;
217 return m_supportedButtons;
221 return m_tapFingerCount;
225 return defaultValue(
"TapToClick", m_tapToClickEnabledByDefault);
237 return defaultValue(
"TapAndDrag", m_tapAndDragEnabledByDefault);
246 return defaultValue(
"TapDragLock", m_tapDragLockEnabledByDefault);
250 return m_tapDragLock;
255 return m_supportsDisableWhileTyping;
259 return defaultValue(
"DisableWhileTyping", m_disableWhileTypingEnabledByDefault);
263 return m_supportsPointerAcceleration;
267 return m_supportsLeftHanded;
271 return m_supportsCalibrationMatrix;
275 return m_supportsDisableEvents;
279 return m_supportsDisableEventsOnExternalMouse;
283 return m_supportsMiddleEmulation;
287 return m_supportsNaturalScroll;
291 return (m_supportedScrollMethods & LIBINPUT_CONFIG_SCROLL_2FG);
295 return (m_supportedScrollMethods & LIBINPUT_CONFIG_SCROLL_EDGE);
299 return (m_supportedScrollMethods & LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN);
303 return defaultValue(
"LeftHanded", m_leftHandedEnabledByDefault);
307 return defaultValue(
"MiddleButtonEmulation", m_middleEmulationEnabledByDefault);
311 return defaultValue(
"NaturalScroll", m_naturalScrollEnabledByDefault);
315 quint32 defaultScrollMethod = defaultValue(
"ScrollMethod",
static_cast<quint32
>(m_defaultScrollMethod));
316 return static_cast<libinput_config_scroll_method
>(defaultScrollMethod);
320 return static_cast<quint32
>(defaultScrollMethod());
324 return defaultScrollMethod() == LIBINPUT_CONFIG_SCROLL_2FG;
328 return defaultScrollMethod() == LIBINPUT_CONFIG_SCROLL_EDGE;
332 return defaultScrollMethod() == LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN;
336 return m_tapFingerCount > 1;
340 quint32 lmrButtonMap = defaultValue(
"LmrTapButtonMap",
static_cast<quint32
>(m_defaultTapButtonMap));
341 return lmrButtonMap == LIBINPUT_CONFIG_TAP_MAP_LMR;
344 void setLmrTapButtonMap(
bool set);
347 return m_tapButtonMap & LIBINPUT_CONFIG_TAP_MAP_LMR;
352 return m_defaultScrollButton;
356 return m_middleEmulation;
361 return m_naturalScroll;
364 void setScrollMethod(
bool set,
enum libinput_config_scroll_method method);
367 return m_scrollMethod & LIBINPUT_CONFIG_SCROLL_2FG;
371 setScrollMethod(set, LIBINPUT_CONFIG_SCROLL_2FG);
375 return m_scrollMethod & LIBINPUT_CONFIG_SCROLL_EDGE;
379 setScrollMethod(set, LIBINPUT_CONFIG_SCROLL_EDGE);
383 return m_scrollMethod & LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN;
387 setScrollMethod(set, LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN);
391 setScrollMethod(
true, (libinput_config_scroll_method)method);
395 return m_scrollButton;
397 void setScrollButton(quint32 button);
401 return defaultValue(
"ScrollFactor", 1.0);
405 return m_scrollFactor;
407 void setScrollFactor(qreal factor);
412 return m_disableWhileTyping;
426 auto list = defaultValue(
"CalibrationMatrix", QList<float>{});
427 if (list.size() == 16) {
428 return QMatrix4x4{list.constData()};
431 return m_defaultCalibrationMatrix;
435 return m_calibrationMatrix;
437 void setCalibrationMatrix(
const QMatrix4x4 &matrix);
441 quint32 orientation = defaultValue(
"Orientation",
static_cast<quint32
>(Qt::PrimaryOrientation));
442 return static_cast<Qt::ScreenOrientation
>(orientation);
446 return m_orientation;
448 void setOrientation(Qt::ScreenOrientation orientation);
451 setOrientation(Qt::ScreenOrientation(orientation));
456 return m_defaultPointerAcceleration;
460 return m_pointerAcceleration;
465 void setPointerAcceleration(qreal acceleration);
468 setPointerAcceleration(acceleration.toDouble());
472 return QString::number(m_pointerAcceleration,
'f', 3);
476 return (m_supportedPointerAccelerationProfiles & LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
480 return (m_supportedPointerAccelerationProfiles & LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
484 return (m_defaultPointerAccelerationProfile & LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
488 return (m_defaultPointerAccelerationProfile & LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
492 return (m_pointerAccelerationProfile & LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
496 return (m_pointerAccelerationProfile & LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
498 void setPointerAccelerationProfile(
bool set,
enum libinput_config_accel_profile profile);
501 setPointerAccelerationProfile(set, LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
505 setPointerAccelerationProfile(set, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
509 setPointerAccelerationProfile(
true, (libinput_config_accel_profile)profile);
513 return defaultValue(
"PointerAccelerationProfile",
static_cast<quint32
>(m_defaultPointerAccelerationProfile));
517 return (m_supportedClickMethods & LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
521 return (defaultClickMethod() == LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
525 return (m_clickMethod == LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
529 return (m_supportedClickMethods & LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
533 return (defaultClickMethod() == LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
537 return (m_clickMethod == LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
539 void setClickMethod(
bool set,
enum libinput_config_click_method method);
542 setClickMethod(set, LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
546 setClickMethod(set, LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
550 setClickMethod(
true, (libinput_config_click_method)method);
554 return static_cast<libinput_config_click_method
>(defaultClickMethodToInt());
558 return defaultValue(
"ClickMethod",
static_cast<quint32
>(m_defaultClickMethod));
569 return defaultValue(
"Enabled",
true);
588 m_defaultConfig = config;
594 void setOutputName(
const QString &uuid)
override;
603 void loadConfiguration();
617 return m_tabletSwitch;
620 int stripsCount()
const;
621 int ringsCount()
const;
623 void *groupUserData()
const;
626 void setOutput(
Output *output);
628 LEDs leds()
const override;
629 void setLeds(LEDs leds)
override;
631 QRectF defaultOutputArea()
const;
632 bool supportsOutputArea()
const;
633 QRectF outputArea()
const;
634 void setOutputArea(
const QRectF &outputArea);
638 return defaultValue(
"MapToWorkspace",
false);
643 return m_mapToWorkspace;
646 void setMapToWorkspace(
bool mapToWorkspace);
677 void writeEntry(
const ConfigKey &key,
const T &value);
680 T defaultValue(
const char *key,
const T &fallback)
const
682 if (m_defaultConfig.isValid() && m_defaultConfig.hasKey(key)) {
683 return m_defaultConfig.readEntry(key, fallback);
691 bool m_alphaNumericKeyboard =
false;
696 bool m_supportsGesture;
697 bool m_switch =
false;
698 bool m_lidSwitch =
false;
699 bool m_tabletSwitch =
false;
702 QString m_outputName;
706 Qt::MouseButtons m_supportedButtons = Qt::NoButton;
707 int m_tapFingerCount;
708 enum libinput_config_tap_button_map m_defaultTapButtonMap;
709 enum libinput_config_tap_button_map m_tapButtonMap;
710 bool m_tapToClickEnabledByDefault;
712 bool m_tapAndDragEnabledByDefault;
714 bool m_tapDragLockEnabledByDefault;
716 bool m_supportsDisableWhileTyping;
717 bool m_supportsPointerAcceleration;
718 bool m_supportsLeftHanded;
719 bool m_supportsCalibrationMatrix;
720 bool m_supportsDisableEvents;
721 bool m_supportsDisableEventsOnExternalMouse;
722 bool m_supportsMiddleEmulation;
723 bool m_supportsNaturalScroll;
724 quint32 m_supportedScrollMethods;
725 bool m_supportsScrollEdge;
726 bool m_supportsScrollOnButtonDown;
727 bool m_leftHandedEnabledByDefault;
728 bool m_middleEmulationEnabledByDefault;
729 bool m_naturalScrollEnabledByDefault;
730 enum libinput_config_scroll_method m_defaultScrollMethod;
731 quint32 m_defaultScrollButton;
732 bool m_disableWhileTypingEnabledByDefault;
733 bool m_disableWhileTyping;
734 bool m_middleEmulation;
736 bool m_naturalScroll;
737 enum libinput_config_scroll_method m_scrollMethod;
738 quint32 m_scrollButton;
739 qreal m_defaultPointerAcceleration;
740 qreal m_pointerAcceleration;
741 qreal m_scrollFactor;
742 quint32 m_supportedPointerAccelerationProfiles;
743 enum libinput_config_accel_profile m_defaultPointerAccelerationProfile;
744 enum libinput_config_accel_profile m_pointerAccelerationProfile;
747 KConfigGroup m_config;
748 KConfigGroup m_defaultConfig;
749 bool m_loading =
false;
751 QPointer<Output> m_output;
752 Qt::ScreenOrientation m_orientation = Qt::PrimaryOrientation;
753 QMatrix4x4 m_defaultCalibrationMatrix;
754 QMatrix4x4 m_calibrationMatrix;
755 quint32 m_supportedClickMethods;
756 enum libinput_config_click_method m_defaultClickMethod;
757 enum libinput_config_click_method m_clickMethod;
760 QRectF m_outputArea = QRectF(0, 0, 1, 1);
761 bool m_mapToWorkspace =
false;